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:
- AdSense Özel Arama Reklamları özel arama stilleri ile
- Android uygulaması geliştirme
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:
- 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ğlananContext
veSearchAdController
parametresini içerenActivity
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. ÖncekiloadAds
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 birView
oluşturun. - Reklamlar yüklendikten sonra, önceden oluşturulmuş
View
ilepopulateAdView
numaralı telefonu arayın oView
içinde önbelleğe alınmış bir reklam oluşturmak içincreateAdView
ile oluşturun. AyrıcaView
biradKey
, isteğe bağlı dize girin. tanımlamak önemlidir. Bu işlem, buadKey
ile önbellekte kalır. Böylece, gelecekteki bir çağrıya aynıadKey
iletildiğindepopulateAdView
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 herpopulateAdView
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.)
- Reklamların nasıl yapıldığını özelleştirmek için bu nesneyi
SearchAdController
oluşturucuya iletin. emin olmanız gerekir.SearchAdOptions.Builder
numaralı telefondanbuild()
adlı kişiyi şu numara için arayın:SearchAdOptions
nesnesi oluşturun.
View
View
createAdView()
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.
SearchAdController
üzerindeloadAds
yöntemini birSearchAdRequest
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çinSearchAdRequest.Builder
.
- 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 ilkloadAds
loadAds
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.