Android 向けの AFS ネイティブ実装

Google Mobile Ads SDK は、カスタムの検索スタイルもサポートしています。アプリが すでに Google Mobile Ads SDK を使用している場合は、 AFSMA SDK のバージョン してください。

18.1.0 以前からバージョン 19.0.0 以降にアップグレードする場合は、 移行ガイドをご覧ください。

前提条件

この実装ガイドは、読者が次の内容を理解していることを前提としています。

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.gradlegoogle() への参照が含まれていることを確認します。 リポジトリまたは 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

  • このクラスは、広告のリクエスト、キャッシュ、 広告の取得、広告のレンダリングなどがあります
  • 広告コンテキストごとに個別の 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 は、キャッシュに保存された広告と関連する広告キーをすべて消去します)。

SearchAdOptions

  • このオブジェクトを SearchAdController コンストラクタに渡して、広告の再生方法をカスタマイズする 表示されます。SearchAdOptions.Builderbuild() を呼び出すと、 SearchAdOptions オブジェクトを作成します。

View

  • 次のように createAdView() を呼び出して、広告を保持する View オブジェクトを作成します。 SearchAdController。一度に最大 1 つの広告が表示されますが、同じViewで 異なる広告を表示するためにリサイクルされます。

SearchAdRequest

  • SearchAdRequest を使用して SearchAdControllerloadAds メソッドを呼び出します。 非同期の広告リクエストを開始しますbuild() に発信: SearchAdRequest.Builder を使用して SearchAdRequest オブジェクトを作成します。

AdListener

  • このインターフェースを実装して 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 で定義します。