Android İçin AİA Yerel Uygulaması

Google Mobile Ads SDK'sı da özel arama stillerini destekler. Uygulamanız Google Mobile Ads SDK'sını zaten kullanıyorsa AFSMA SDK sürümü .

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 bkz. taşıma rehberimize göz atın.

Ön koşullar

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

AFS Native SDK'yı içe aktarma

SDK'yı ekleme

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

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

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

Üst düzey build.gradle dosyanızda google() deposuna veya maven { url "https://maven.google.com" } dosyasına referans bulunduğundan emin olun.

Bu talimatları uygulayın. Google Play Bağımsız Sürüm Eşleştirici Eklentisi'ni projenize dahil edin. Bu eklentinin uygulanması, AFS Native SDK'sı Google Play Hizmetleri'nin uyumlu olmayan bir sürümüyle kullanıldığında uygulamanın derlenmesine izin vermek yerine bir Gradle derleme hatasına neden olur ve çalışma zamanında kilitlenmelere neden olabilir. Alternatif olarak failOnVersionConflict() ResolutionStrategy projenize ekleyerek Google Play'in uyumsuz sürümleri kullanıldığında derleme hatasına neden olabilirsiniz Projenizde hizmetler kullanılır. 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 Android Destek Kitaplıkları yerine Jetpack (AndroidX) Kitaplıkları kullanmalıdır. Uyumluluk koşulları:

  • 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; buradaki talimatları uygulayın: AndroidX'e taşıma.

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, önbelleğe alma ve reklamları alma ve reklam oluşturma.
  • Her reklam bağlamı için ayrı bir SearchAdController gerekir; Örneğin, arama sonuçları listesi ve başka bir liste ile birlikte reklamları gösteren bir ekrana belirli bir ürünün ayrıntılarının yanında reklam gösteren bir ekranda her durum için bir tane olacak şekilde iki ayrı SearchAdController örneği oluşturun.
  • Oluşturucuya web mülk kodunuz (yayıncı kimliği), döndürülen reklamlara uygulanacak stil kimliği ve SearchAdOptions sağlanmalıdır. Oluşturucuda sağlanan Context, SearchAdController öğesini içeren ve View reklamını yerleştireceğiniz Activity olmalıdır.
  • Yeni bir kullanıcı araması belirtmek ve eşzamansız bir reklam isteği başlatmak için loadAds işlevini çağırın. Önceki loadAds numaralı telefona yapılan aramalardan yüklenen tüm reklamlar şu numaradan temizlenir: yeni bir çağrı yapıldığında dahili reklam önbelleğini korur.
  • Reklam öğeleri göstermek için createAdView ile View oluşturun.
  • Reklamlar yüklendikten sonra, önbelleğe alınmış bir reklamı bu View içinde oluşturmak için createAdView ile daha önce oluşturulmuş bir View ile populateAdView'ü çağırın. Doldurulacak View değerine ek olarak, reklamı benzersiz şekilde tanımlamak için bir adKey (kendi seçeceğiniz bir dize) sağlayın. Bu işlem, önbellekten döndürülen belirli reklam öğesini bu adKey ile ilişkilendirir. Böylece, aynı adKey gelecekte populateAdView çağrısına iletildiğinde aynı reklam döndürülür. Örneğin, populateAdView ilk kez adKey="keyA" ile çağrılırsa ve yürüyüş botları için bir reklam oluşturursa adKey="keyA" ile populateAdView'e yapılan her bir sonraki çağrı, yürüyüş botları için aynı reklamı doldurur. (loadAds adresine yeni bir çağrı yapmak, önbelleğe alınan tüm reklamları ve ilişkili reklam anahtarlarını temizler.)

SearchAdOptions

  • Reklamların nasıl isteneceğini ve gösterileceğini özelleştirmek için bu nesneyi SearchAdController oluşturucuya iletin. SearchAdOptions.Builder numaralı telefondan build() adlı kişiyi şu numara için arayın: SearchAdOptions nesnesi oluşturun.

View

  • SearchAdController üzerinde createAdView() çağrısı yaparak reklamları barındıracak bir View nesnesi oluşturun. Aynı anda en fazla bir reklam gösterir ancak aynı View, zaman içinde farklı reklamlar göstermek için yeniden kullanılabilir.

SearchAdRequest

  • SearchAdController üzerinde loadAds yöntemini bir SearchAdRequest ile çağırın kullanarak eşzamansız bir reklam isteği başlatabilirsiniz. build() numaralı telefonu şu telefondan ara: SearchAdRequest nesnesi oluşturmak için SearchAdRequest.Builder.

AdListener

  • Bu arayüzü uygulayın ve çeşitli durumlar için geri çağırma işlevleri kaydetmek üzere SearchAdController yapıcısına iletin.
  • Not: İptal edilen bir istekte (arama) AdListener geri arama yapılmaz ilkloadAdsloadAds arama sonlandırıldı).

Örnek uygulama

Aşağıdaki örnekte, bir Activity örneğinde SearchAdController oluşturulması gösterilmektedir.

//  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ı sorgu başlattığında SearchAdRequest oluşturup loadAds yöntemini çağırın SearchAdController kullanarak eşzamansız bir reklam isteği başlatı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, uygulamanızı reklamların gösterilmeye hazır olduğunu bildirmek için onAdLoaded() yöntemini içeren bir AdListener nesnesi gerektirir. Ayrıca Hataları tespit edip düzeltebilmek için onAdFailedToLoad() yöntemini uygulayın. Örneğin, hata ayıklamak için aşağıdaki AdListener kullanabilirsiniz: uygulama:

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 sabitler AdListener'da tanımlanmıştır.