Google Mobile Ads SDK は、カスタムの検索スタイルもサポートしています。アプリが すでに Google Mobile Ads SDK を使用している場合は、 AFSMA SDK のバージョン してください。
18.1.0 以前からバージョン 19.0.0 以降にアップグレードする場合は、 移行ガイドをご覧ください。
前提条件
この実装ガイドは、読者が次の内容を理解していることを前提としています。
- AdSense カスタム検索広告 カスタム検索スタイルを使用
- Android アプリ開発
AFS Native SDK をインポートする
SDK を追加する
アプリに AFS Native SDK を追加する手順は次のとおりです。
アプリ モジュール ディレクトリ内の build.gradle
ファイルを開きます。
最新バージョンの SDK 用の新しいビルドルールを dependencies
に追加します。
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
最上位の build.gradle
に google()
への参照が含まれていることを確認します。
リポジトリまたは maven { url "https://maven.google.com" }
に追加します。
こちらの手順に沿って操作します。
Google Play スタンドアロン バージョン マッチャー プラグインをプロジェクトに追加します。
このプラグインを適用すると、AFS Native SDK が
互換性のないバージョンの Google Play 開発者サービスでの使用を許可せずに、
ランタイム クラッシュを引き起こす可能性があります。または、
failOnVersionConflict()
ResolutionStrategy
Google Play の互換性のないバージョンである場合にビルドエラーが発生する
プロジェクトでサービスが使用されている。
変更を保存し、[Sync Project with Gradle Files] をクリックします。
クリックします。
Android Support Library の代わりに AndroidX を使用する
SDK のバージョン 17.0.0
以降、アプリで Jetpack(AndroidX)を使用する必要があります
ライブラリを使用します。互換性要件:
com.android.tools.build:gradle
を v3.2.1 以降に設定します。compileSdkVersion
を 28 以降に設定します。- Jetpack(AndroidX)を使用するようにアプリを更新します。次の手順に沿って操作します。 AndroidX への移行
クラス
アプリで AFS ネイティブ広告を配信するには、次のクラスを実装します。
- このクラスは、広告のリクエスト、キャッシュ、 広告の取得、広告のレンダリングなどがあります
- 広告コンテキストごとに個別の
SearchAdController
が必要です。たとえば 検索結果のリストと並んで広告を表示する画面 特定の商品の詳細とともに広告が表示される場合は、 ケースごとに 1 つずつ、SearchAdController
の 2 つの別個のインスタンスを作成します。 - コンストラクタには、ウェブ プロパティ コード(パブリッシャー ID)を指定する必要があります。
適用先のスタイル ID
返された広告、
SearchAdOptions
件です。コンストラクタで提供されるContext
Activity
には、SearchAdController
を含み、 広告はView
に配置されます。 loadAds
を呼び出して新規ユーザー検索を指定して、非同期の広告を開始します リクエストできます。loadAds
への以前の呼び出しから読み込まれた広告はすべて、次のものから消去されます 新しい呼び出しが行われたときに内部広告キャッシュに保存されます。createAdView
を使用してView
を作成し、広告クリエイティブを表示します。- 広告が読み込まれたら、以前に生成した
View
を使用してpopulateAdView
を呼び出します。createAdView
を使って、キャッシュに保存された広告をそのView
にレンダリングします。このコースでは、View
: 入力する値。adKey
(任意の文字列)を指定します。 広告を一意に識別する ID です。これによって返された特定の広告クリエイティブと そのadKey
を持つキャッシュ(同じadKey
が将来の呼び出しに渡されたときに)populateAdView
を指定すると、同じ広告が返されます。たとえばpopulateAdView
が初めてadKey="keyA"
で呼び出され、 ハイキング ブーツの広告で、後続のpopulateAdView
への呼び出しごとに、adKey="keyA"
では、ハイキング ブーツについて同じ広告が入力されます。(サービスに対する新しい呼び出しをloadAds
は、キャッシュに保存された広告と関連する広告キーをすべて消去します)。
- このオブジェクトを
SearchAdController
コンストラクタに渡して、広告の再生方法をカスタマイズする 表示されます。SearchAdOptions.Builder
のbuild()
を呼び出すと、SearchAdOptions
オブジェクトを作成します。
View
- 次のように
createAdView()
を呼び出して、広告を保持するView
オブジェクトを作成します。SearchAdController
。一度に最大 1 つの広告が表示されますが、同じView
で 異なる広告を表示するためにリサイクルされます。
SearchAdRequest
を使用してSearchAdController
でloadAds
メソッドを呼び出します。 非同期の広告リクエストを開始しますbuild()
に発信:SearchAdRequest.Builder
を使用してSearchAdRequest
オブジェクトを作成します。
- このインターフェースを実装して
SearchAdController
コンストラクタに渡します。 複数の状態に対するコールバックを登録できます。 - 注:
AdListener
コールバックは、キャンセルされたリクエスト( 最初の呼び出しの前にloadAds
への別の呼び出しによってプリエンプトされたloadAds
に書き込まれます。 (通話が解決した)など)。
実装例
以下の例は、サンプルで SearchAdController
を作成する方法を示しています。
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);
}
ユーザーがクエリを開始したら、SearchAdRequest
を作成して loadAds
を呼び出します。
を SearchAdController
に指定して、非同期広告リクエストを開始します。
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
onAdLoaded
コールバックを実装して、読み込まれた広告を広告ビューに表示します。
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");
}
指定したクエリに関連する広告が adView
に表示されます。
エラーの調査
SearchAdController
には、onAdLoaded()
が指定された AdListener
オブジェクトが必要です。
メソッドを使用して、広告を表示する準備ができたことをアプリに通知します。また、
onAdFailedToLoad()
メソッドを実装して、エラーを検出して修正できるようにします。
たとえば、次の AdListener
を使用してコードをデバッグできます。
実装:
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()
コールバック メソッドで使用される定数
AdListener で定義します。