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ı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() için bir referans içerdiğinden emin olun. kod deposuna veya maven { url "https://maven.google.com" } öğesine yükleyebilirsiniz.

Bu talimatları uygulayın. Google Play Bağımsız Sürüm Eşleştirici Eklentisi'ni projenize dahil edin. Bu eklenti uygulanırsa AFS Yerel SDK'sı şu durumda olduğunda gradle derleme hatasına neden olur: izin vermek yerine Google Play Hizmetleri'nin uyumsuz bir sürümüyle kullanılıyor uygulamanın çökmesine 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 şurada Projeyi Gradle Dosyalarıyla Senkronize Et'i tıklayın: 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 Jetpack (AndroidX) kullanması gerekir Android Destek Kitaplıkları yerine Kitaplıklar. 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; 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ü kodunuzun (yayıncı kimliği) sağlanması gerekir. uygulanacak stil kimliği reklamların döndürdüğü ve SearchAdOptions olanların yüzdesi. Oluşturucuda sağlanan Context ve SearchAdController parametresini içeren Activity olmalıdır. reklamı View yerleştirecek.
  • Yeni bir kullanıcı araması belirtmek ve eşzamansız bir reklam başlatmak için loadAds komutunu çağırın isteği gönderin. Ö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 öğelerini görüntülemek için createAdView ile bir View oluşturun.
  • Reklamlar yüklendikten sonra, önceden oluşturulmuş View ile populateAdView numaralı telefonu arayın o View içinde önbelleğe alınmış bir reklam oluşturmak için createAdView ile oluşturun. Ayrıca View bir adKey, isteğe bağlı dize girin. tanımlamak önemlidir. Bu işlem, bu adKey ile önbellekte kalır. Böylece, gelecekteki bir çağrıya aynı adKey iletildiğinde populateAdView değerine ayarlanırsa aynı reklam döndürülür. Örneğin, populateAdView, adKey="keyA" ile ilk kez çağrılıyor ve bir Yürüyüş botları reklamı, bunu takip eden her populateAdView adKey="keyA", yürüyüş botları için aynı reklamı doldurur. ( loadAds, önbelleğe alınan tüm reklamları ve ilişkili reklam anahtarlarını temizler.)

SearchAdOptions

  • Reklamların nasıl yapıldığını özelleştirmek için bu nesneyi SearchAdController oluşturucuya iletin. emin olmanız gerekir. SearchAdOptions.Builder numaralı telefondan build() adlı kişiyi şu numara için arayın: SearchAdOptions nesnesi oluşturun.

View

  • ViewcreateAdView() SearchAdController. Aynı anda en fazla bir reklam gösterir, ancak aynı View aşağıdakileri gösterebilir görüntülemek için zaman içinde geri dönüştürülmesini sağlar.

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 SearchAdController oluşturucuya iletin çeşitli eyaletler için geri çağırmayı içerir.
  • Not: İptal edilen bir istekte (arama) AdListener geri arama yapılmaz ilkloadAdsloadAds arama sonlandırıldı).

Örnek uygulama

Aşağıdaki örnek, bir örnekte SearchAdController oluşturmayı gösterir Activity.

//  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, onAdLoaded() içeren bir AdListener nesnesini gerektiriyor yöntemini kullanabilirsiniz. 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.