Android İçin AİA Yerel Uygulaması

Google Mobile Ads SDK'sı da özel arama stillerini destekler. Uygulamanız halihazırda Google Mobile Ads SDK'sını kullanıyorsa bunun yerine AFSMA SDK'sı sürümünü kullanmanızı öneririz.

19.0.0 veya daha yeni bir sürüme 18.1.0 veya daha eski bir sürüme geçiyorsanız lütfen taşıma rehberimize bakın.

Ön koşullar

Bu uygulama kılavuzunda, aşağıdaki konularda bilgi sahibi olduğunuz varsayılır:

AFS Yerel SDK'sını içe aktarın

SDK'yı ekleme

Uygulamanıza AFS Yerel SDK'sı eklemek için aşağıdakileri yapın:

Uygulama modülü dizininizde build.gradle dosyasını açın. SDK'nın en son sürümü için dependencies altına yeni bir derleme kuralı ekleyin:

dependencies {
  implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}

Üst düzey build.gradle öğenizin google() veya maven { url "https://maven.google.com" } için bir referans içerdiğinden emin olun.

Google Play Bağımsız Sürüm Eşleştirici Eklentisi'ni projenize eklemek için bu talimatları uygulayın. Bu eklentinin uygulanması, AFS Yerel SDK'sı Google Play Hizmetleri'nin uyumsuz bir sürümüyle kullanıldığında uygulamanın derlenmesine izin vermek yerine, ancak çalışma zamanında kilitlenmelerine yol açabilecek bir gradle derleme hatasına neden olur. Alternatif olarak, projenizde Google Play Hizmetleri'nin uyumlu olmayan sürümleri kullanıldığında derleme hatasına neden olmak için projenize failOnVersionConflict() ResolutionStrategy'yi uygulayın. Değişiklikleri kaydedin ve araç çubuğunda Projeyi Gradle Dosyalarıyla Senkronize Et'i tıklayın.

Android Destek Kitaplıkları yerine AndroidX'i kullanma

SDK'nın 17.0.0 sürümünden itibaren, uygulamanızın Android Destek Kitaplıkları yerine Jetpack (AndroidX) Kitaplıklarını kullanması gerekir. Uyumluluk gereksinimleri:

  • com.android.tools.build:gradle uygulamasını v3.2.1 veya sonraki bir sürüme ayarlayın.
  • compileSdkVersion değerini 28 veya sonraki bir değere ayarlayın.
  • Uygulamanızı Jetpack (AndroidX) kullanacak şekilde güncelleyin; AndroidX'e Taşıma bölümündeki talimatları uygulayın.

Sınıflar

Uygulamanızda AFS doğal reklamları yayınlamak için aşağıdaki sınıfları uygulayın:

SearchAdController

  • Bu sınıf, eşzamansız olarak reklam isteğinde bulunma, reklamları önbelleğe alıp alma ve reklamları oluşturma işlemlerinden sorumludur.
  • Her reklam bağlamı için ayrı bir SearchAdController gereklidir. Örneğin, arama sonuçları listesinin yanında reklamları gösteren bir ekran ve reklamları belirli bir ürünün ayrıntılarıyla birlikte gösteren başka bir ekran varsa her durum için bir tane olacak şekilde iki ayrı SearchAdController örneği oluşturmalısınız.
  • Oluşturucuya, döndürülen reklamlara uygulanacak web mülkü kodunuz (yayıncı kimliği), stil kimliği ve SearchAdOptions sağlanmalıdır. Oluşturucuda sağlanan Context, SearchAdController öğesini içeren ve View reklamı yerleştireceğiniz Activity öğesi olmalıdır.
  • Yeni bir kullanıcı araması belirtmek ve eşzamansız bir reklam isteği başlatmak için loadAds komutunu çağırın. Önceki loadAds çağrılarından yüklenen tüm reklamlar, yeni bir çağrı yapıldığında dahili reklam önbelleğinden temizlenir.
  • Reklam öğelerini görüntülemek için createAdView ile bir View oluşturun.
  • Reklamlar yüklendikten sonra, söz konusu View içinde önbelleğe alınmış bir reklam oluşturmak için önceden createAdView ile oluşturulmuş View ile populateAdView çağrısı yapın. Doldurulacak View öğesine ek olarak, reklamı benzersiz şekilde tanımlamak için rastgele bir dize olan adKey değerini sağlayın. Bu, önbellekten döndürülen belirli reklam öğesini söz konusu adKey ile ilişkilendirir. Böylece, populateAdView gelecekteki bir çağrıya aynı adKey iletildiğinde aynı reklam döndürülür. Örneğin, populateAdView, adKey="keyA" ile ilk kez çağrılırsa ve yürüyüş botları için bir reklam oluşturursa adKey="keyA" ile populateAdView için yapılan her bir çağrı, yürüyüş botları için aynı reklamı doldurur. (loadAds için yeni bir çağrı yapıldığında, önbelleğe alınan tüm reklamlar ve ilişkili reklam anahtarları temizlenir.)

SearchAdOptions

  • Reklamların istenme ve görüntülenme şeklini özelleştirmek için bu nesneyi SearchAdController oluşturucuya iletin. SearchAdOptions nesnesi oluşturmak için SearchAdOptions.Builder üzerinde build() çağrısı yapın.

View

  • SearchAdController üzerinde createAdView() işlevini çağırarak reklamların bekletileceği bir View nesnesi oluşturun. Aynı anda en fazla bir reklam gösterir ancak aynı View, zaman içinde farklı reklamlar görüntülemek için geri dönüştürülebilir.

SearchAdRequest

  • Eşzamansız reklam isteği başlatmak için SearchAdController üzerinde loadAds yöntemini SearchAdRequest ile çağırın. SearchAdRequest nesnesi oluşturmak için SearchAdRequest.Builder üzerinde build() çağrısı yapın.

AdListener

  • Bu arayüzü uygulayın ve çeşitli durumlar için geri çağırmaları kaydetmek üzere SearchAdController oluşturucuya iletin.
  • Not: İptal edilen bir istekte (ilk çağrı çözümlenmeden önce loadAds numaralı telefona yapılan başka bir çağrı tarafından geçici olarak kesilen loadAds çağrısı) AdListener geri çağırması yapılmaz.

Örnek uygulama

Aşağıdaki örnek, bir Activity örneği içinde SearchAdController oluşturmayı gösterir.

//  MainActivity.java implementation
//  (MainActivity is a subclass of Activity)

SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;

protected void onCreate(Bundle bundle){
  super.onCreate(bundle);
  adContainer = (ViewGroup) findViewById(...);
  // Specify ad options (not required).
  SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
  adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
  adOptionsBuilder.setPrefetch(true);
  adOptionsBuilder.setNumAdsRequested(3);
  // Provide a callback to trigger when ads are loaded.
  AdListener adListener = new AdListener() {
    public void onAdLoaded() {
      createAndShowAd();
    }
  };
  // Instantiate the SearchAdController.
  adController = new SearchAdController(this, "your-client-id", "your-style-id",
                                        adOptionsBuilder.build(), adListener);
}

Kullanıcı bir sorgu başlattığında SearchAdRequest oluşturun ve eşzamansız reklam isteği başlatmak için SearchAdController üzerinde loadAds yöntemini çağırın.

// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());

Yüklenen bir reklamı reklam görünümüne doldurmak için onAdLoaded geri çağırmanızı uygulayın.

private void createAndShowAd() {
  // Create a new view that will contain the ad.
  View adView = adController.createAdView();
  // Attach the new view to the view hierarchy.
  adContainer.addView(adView);
  // Display the ad inside the adView. We need to provide an adKey to
  // indicate which ad is to be displayed in the adView. In this example, 
  // since we only have one ad, we can provide any constant string. However, 
  // if you intend to display multiple ads, each ad you wish to display
  // should be given a unique adKey of your choosing.
  adController.populateAdView(adView, "demoAd");
}

Belirtilen sorguyla alakalı bir reklam artık adView özelliğinde görünecek.

Hataları inceleme

SearchAdController, reklamların gösterilmeye hazır olduğunu uygulamanıza bildirmek için onAdLoaded() yöntemine sahip bir AdListener nesnesini gerektirir. Hataları tespit edip düzeltebilmek için onAdFailedToLoad() yöntemini de uygulamalısınız. Örneğin, uygulamanızda hata ayıklamak için aşağıdaki AdListener kullanabilirsiniz:

AdListener adListener = new AdListener() {
    public void onAdLoaded() {
        // Called when an ad is loaded.
        Toast.makeText(MainActivity.this, "Ad Loaded",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
    }

    public void onAdLeftApplication() {
        // Called when an ad leaves the application
        // (to go to the browser for example).
        Toast.makeText(MainActivity.this, "Ad Left Application",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Called when an ad request failed.
        Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
                Toast.LENGTH_SHORT).show();
        Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
                errorCode);
    }
};

onAdFailedToLoad() geri çağırma yönteminde kullanılan sabit değerler AdListener'da tanımlanır.