LibGDX projesine Huawei Ads Kit Entegrasyonu

Oguz Ozsoy
Huawei Developers - Türkiye
4 min readJun 30, 2020

Herkese Merhaba,

Bu yazımda LibGDX ile oluşturmuş oluşturduğumuz bir oyuna Huawei Ads Kit’ i nasıl entegre edeceğimizi anlatacağım.

LibGDX

LibGDX 2D ve 3D oyun geliştirebileceğimiz açık kaynak bir projedir. LibGDX ile bir proje oluşturduğumuz da LibGDX bize core ve android olmak üzere iki modül oluşturuyor (iOS ve Desktop modüllerini de oluşturabiliriz). Bir oyunu geliştirmek için gerekli olan ses ve görüntü işlemlerini Core modülü üzerinde gerçekleştiriyoruz. Android modülünde ise mobil işlemleri gerçekleştiriyoruz.

Huawei Ads Kit

Huawei Ads Kit bizlere Banner, Rewarded, Interstitial, Native, Splash olmak üzere bir çok reklam formatı sunuyor ve geliştiricilere daha fazla gelir elde etme imkanı sağlıyor. Huawei Ads Kit ile ilgili detaylı bilgiye buradan ulaşabilirsiniz.

Dilerseniz hızlıca entegrasyona geçelim. Entegrasyon sırasında Android modülde entegre ettiğimiz bir mobil servisin core modülünde nasıl kullanıldığını göreceğiz. Bu yaklaşımı diğer mobil servisler içinde uygulayabilirsiniz.

LibGDX kütüphanesi ile daha önce proje oluşturmadıysanız linki inceleyebilirsiniz.

1- Project Level build.gradle dosyasına maven repositorysini ekleyelim.

buildscript {
...
repositories {
...
maven {url 'http://developer.huawei.com/repo/'}
}
}

allprojects {
...
repositories {
...
maven {url 'http://developer.huawei.com/repo/'}
}
}

2- Android modül build.gradle dosyası içerisinde dependencies tag’ini oluşturalım ve ads kit kütüphanesini ekleyelim.

android {
...
dependencies{
implementation 'com.huawei.hms:ads-lite:13.4.30.301'
}
}

3. Yeni eklediğimiz kütüphaneleri kullanabilmek için projemizi senkronize edelim.

Sadece yukarıda ki 3 adımı tamamlayarak Huawei Ads Kit projemizde kullanılabilir hale geldi. Ben örnek olması açısından BannerAd ve RewardedAd entegrasyonunu gerçekleştireceğim.

BannerAd

LibGDX ile yeni proje oluşturduğumuz bize android modül içerisinde AndroidLauncher adında bir sınıf oluşturuyor. Bu sınıfı incelediğimiz de AndroidApplication sınıfından kalıtlanmış yani aslında bir Activity. Biz bu sınıf içerisinde Activity sınıfında yaptığımız bütün işlemleri yapabiliriz.

Öncelikle BannerAd için bize yardımcı olacak manager sınıfı yazalım. Bu sınıf bize BannerView adında bir banner ad view’ ı dönecek ve bizde daha sonra bu view’ ı bir RelativeLayout içerisinde göstereceğiz.

Oluşturduğumuz BannerView’ı ve core modülü içerisinde bulunan MyGame view’ını göstereceğimiz bir RelativeLayout tanımlayalım ve bu viewları oluşturduğumuz bu layouta ekleyelim.

AndroidLauncher onCreate methodunda oluşturmuş olduğumuz bu RelativeLayout’ u set edelim.

@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(initLayout());
}

BannerAd entegrasyonunu tamamladık. Uygulamamızı deneyebiliriz.

RewardedAd

Android modül ve core modüllerinin birlikte çalışması için core modül içerisinde listener ve callback interfacelerimizi tanımlayalım. Daha sonra oluşturacağımız RewardAdManager sınıfı ile MyGame sınıflarını bu interfaceler aracılığı ile haberleştireceğiz.

public interface RewardAdListener {
void showRewardAd(RewardAdStatusCallback callback);
void loadRewardAd(RewardAdLoadCallback callback);
boolean isAdLoaded();
}
interface RewardAdLoadCallback {
void onRewardAdFailedToLoad(int i);
void onRewardedLoaded();
}
interface RewardAdStatusCallback {
void onRewardAdClosed();
void onRewardAdFailedToShow(int i);
void onRewardAdOpened();
void onRewarded();
}

RewardedAd için bir manager sınıfı yazalım. Bu sınıf yardımı ile reklamı yükleyeceğiz ve göstereceğiz.

Oluşturduğumuz bu manager sınıfını AndroidLauncher içerisinde tanımlayalım. Bunun için initRewardAd adında bir method oluşturalım ve bu metodu onCreate içerisinde çağıralım.

Şimdi sıra geldi core modülü içerisinde bu rewardAd’ i yükleme ve gösterme işlemlerine. Bunun için showRewardAd ve loadRewardAd adında iki method tanımladım.

initRewardAd metodu içerisinde çağırdığımız setRewardAdListener metodunu tanımlayalım ve listener ataması yaptıktan sonra reklam yüklenmemişse yükleyelim.

public void setRewardedAdListener(RewardAdListener listener){
this.adsController = listener;
if(!listener.isAdLoaded()){
loadRewardAd();
}
}

core modül içerisinde gelen render metodu içerisinde ekrana tıkladığımız da reklamı gösterecek şekilde tanımlamamızı yapalım.

@Override
public void render() {
if (Gdx.input.justTouched()) {
if (rewardAdListener != null) {
showRewardAd();
}
}
...
}

Bütün entegrasyon adımlarını tanımladık uygulamamızı uygulamamızı test etmeden önce ToastHandler interface’ ini oluşturmalı ve set etmeliyiz.

interface ToastHandler {
void showToast(String msg);
}

MyGame sınıfı içerisinde setToastHandler metodunu tanımlayalım ve Android Launcher sınıfında bu implement edelim.

public void setToastHandler(ToastHandler toastHandler) {
this.toastHandler = toastHandler;
}

AndroidLauncher sınıfı içerisinde toastHandler’ ı set edelim ve showToast metodunu tanımlayalım.

@Override
protected void onCreate (Bundle savedInstanceState) {
...
myGame.setToastHandler(this);
}
@Override
public void showToast(final String msg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(AndroidLauncher.this, msg, Toast.LENGTH_SHORT).show();
}
});
}

Ever bütün adımlarımı tamamladığımıza göre artık uygulamamızı deneyebiliriz.

Referanslar

https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/publisher-service-dev-process-0000001050064964

https://libgdx.badlogicgames.com/documentation/gettingstarted/Creating%20Projects.html

--

--