Android 向け AFS モバイルアプリ(AFSMA)の実装

前提条件

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

  • AFS カスタム検索広告(CSA)の実装プロトコル
  • Android アプリの開発
  • Android(現在は Google Play 開発者サービスの一部)向け Google Mobile Ads SDK を Android Studio プロジェクトに関連付けるGoogle Play 開発者サービスのバージョン 9.0.0 が必要です。

クラス

アプリ内で AFSMA 広告(動的高さ検索広告とも呼ばれます)を配信するには、次のクラスを実装します。

SearchAdView

  • このクラスは Android の ViewGroup クラスを継承し、AFSMA 広告を表示します。SearchAdView は、DynamicHeightSearchAdRequest を使って広告のリクエストを行い、返された広告を表示します。SearchAdView は、アプリの既存のビューグループのいずれかに追加する必要があります。
  • SearchAdView は、SearchAdView が実行されているコンテキスト(通常は Activity)でインスタンス化する必要があります。
  • SearchAdView がインスタンス化されたら、AdSize.SEARCH を指定して setAdSize() メソッドを呼び出して、AFSMA 広告をリクエストする必要があります。その他の列挙値は、AFS(モバイルアプリ)に対応していない広告をリクエストします。
  • プロパティ コードを使用して、このオブジェクトの setAdUnitId() メソッドを呼び出します。

DynamicHeightSearchAdRequest.Builder

  • このクラスは、広告リクエスト パラメータをカプセル化します。これは、AFS パソコンおよびモバイルウェブ用の JavaScript 広告リクエスト オブジェクト(ページ オプション、ユニット オプション)でパラメータを設定するのに似ています。
  • 適切なセッターを使用してパラメータを設定します(つまり、setQuery() を呼び出してクエリ パラメータを設定します)。

実装例

以下の例では、Activity を使用して、ViewGroup のサブビューとして SearchAdView を作成しています。AFSMA 広告を適切にリクエストするには、SearchAdView オブジェクトで AdSize.SEARCH を指定して setAdSize() メソッドを呼び出す必要があります。

//  MainActivity.java implementation
//  (MainActivity is a subclass of Activity)

// Create the SearchAdView
final SearchAdView searchAdView = new SearchAdView(this);

// Set parameter to request for dynamic height search ads
searchAdView.setAdSize(AdSize.SEARCH); // Important!

// Replace with your pub ID (e.g. ms-app-pub-9616389000213823)
searchAdView.setAdUnitId("ms-app-pub-################");

// Add searchAdView to parent view group
...

同じ Activity 内で、SearchAdView でレンダリングされる広告のパラメータを指定する DynamicHeightSearchAdRequest.Builder を作成します。AFSMA 広告は AFS カスタム検索広告と同じ方法で設定されます。詳しくは、AFS カスタム検索広告のリファレンスをご覧ください。

// Create the ad request
DynamicHeightSearchAdRequest.Builder builder =
        new DynamicHeightSearchAdRequest.Builder();
builder.setQuery("flowers");
builder.setNumber(2);

// Replace with the ID of a style from your custom search styles
builder.setAdvancedOptionValue("csa_styleId", "0000000001");

// Customization options (set using setters on
// DynamicHeightSearchAdRequest.Builder)
builder.setAdTest(true);

DynamicHeightSearchAdRequest.Builder オブジェクトに追加のプロパティを設定することで、他のカスタマイズ オプションを使用することもできます。

広告リクエストを行うには、SearchAdView オブジェクトの DynamicHeightSearchAdRequest.Builder オブジェクトを指定して loadAd() メソッドを呼び出します。

searchAdView.loadAd(builder.build());

詳細オプション

広告リクエスト パラメータの大半は、DynamicHeightSearchAdRequest.Builder オブジェクトのセッター メソッドで設定できます。DynamicHeightSearchAdRequest.Builder にセッター メソッドがないパラメータは、setAdvancedOptionValue() メソッドで Key-Value ペアを使用して設定できます。setAdvancedOptionValue() メソッドで設定できる設定の一覧については、AFS カスタム検索広告のリファレンスをご覧ください。

プロパティを正しく設定するには、キーパラメータの先頭に「csa_」を付ける必要があります。

// Advanced customization options (set using key-value pair)

// Set a parameter (parameter_name) and its value (parameter_value)
// builder.setAdvancedOptionValue("csa_parameter_name", "parameter_value");

// Example: Show visible URL below description
// (domainLinkAboveDescription: false)
builder.setAdvancedOptionValue("csa_domainLinkAboveDescription", "false");

パラメータのセッター メソッドを使い、setAdvancedOptionValue を使って設定した場合、2 回目の呼び出しで最初の呼び出しの値がオーバーライドされます。

エラーの調査

SearchAdView(ここでは searchAdView)には、エラーの調査に役立つ setAdListener() メソッドが含まれています。同じ Activity 内:

searchAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Called when an ad is loaded
        super.onAdLoaded();
        Toast.makeText(MainActivity.this, "Ad Loaded",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
    }

    @Override
    public void onAdOpened() {
        // Called when an ad opens an overlay that covers the screen
        super.onAdOpened();
        Toast.makeText(MainActivity.this, "Ad Opened",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Opened");
    }

    @Override
    public void onAdLeftApplication() {
        // Called when an ad leaves the application
        // (to go to the browser for example)
        super.onAdLeftApplication();
        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
        super.onAdFailedToLoad(errorCode);
        Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
                Toast.LENGTH_SHORT).show();
        Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
                errorCode);
    }
});

onAdFailedToLoad() コールバック メソッドで使用される定数については、API リファレンスをご覧ください。

Google Play のデータ開示要件に備える

2021 年 5 月、Google Play は新しいデータ セーフティ セクションを発表しました。このセクションには、アプリによるデータの収集、共有、セキュリティ対策について、デベロッパーから提供された開示情報が表示されます。

このページは、AFS Native SDK の使用に関するデータ開示要件を満たすために役立ちます(ショッピング向け AdSense のご利用にも該当します)。このページでは、SDK がエンドユーザー データを取り扱うかどうか、またその方法について説明しています。

Google では、お客様のサポートにおいて可能な限り情報を開示するよう努めておりますが、アプリによるエンドユーザー データの収集、共有、セキュリティ対策に関して、Google Play のデータ セーフティ セクション フォームにどのように対応するかは、アプリのデベロッパーとしてお客様の責任で判断していただく必要があります。

このページの情報を使用するにあたって

このページには、最新バージョンの SDK によってのみ収集されるエンドユーザー データが記載されています。

収集されるデータを最も適切に表すデータの種類を判断するには、Android のデータの種類に関するガイドをご覧ください。また、収集されたデータが特定のアプリで共有、使用される方法についても考慮する必要があります。

SDK によるアクセスと収集のデータの種類

荷物:

com.google.android.gms:play-services-afs-native

com.google.ads.afsn

自動的に収集されるデータ

AFS SDK は、次のデータを自動的に収集します。データはすべて、広告の配信を目的としてデバイスから Google に送信され、転送時に暗号化されます。アプリがユーザークエリで送信した場合を除き、ユーザーの個人情報が収集されることはありません。

データ このデータは次の目的で収集されます。
IP アドレス 概要:
  • 不正行為防止、セキュリティ、コンプライアンス
  • 広告、マーケティング
  • おおよその位置情報を導き出す
詳細:
IP アドレスは、不正行為や不正使用のモニタリングのほか、ユーザーのおおよその位置情報を取得するために使用されます。

おおよその位置情報は、広告が配信される広告が地域の規制を遵守していることを確認するため、およびユーザーのおおよその現在地に関連する広告を表示するために使用されます。

アプリのアクティビティ
  • ページビュー、アプリ内のタップ
  • アプリ内の検索履歴
概要:
  • アナリティクス
  • 不正行為防止、セキュリティ、コンプライアンス
  • 広告、マーケティング
  • パーソナライズ
詳細:
キーワードに関連する検索広告を Google が返せるように、お客様のアプリは、ユーザーの検索語句を Google に提供しています。ビューとエンゲージメント(タップ)は、返された広告によって測定されます。
診断 概要:
  • アナリティクス
詳細:
SDK では、サービスの改善を実装および測定するために、広告のレンダリングのレイテンシを測定します。また、パブリッシャーによる機能の利用状況を把握するために、クラッシュ レポートやエラーレポートの送信や、必要に応じて他の計測手法を追加することもあります。
デバイスまたはその他の識別子 概要:
  • 不正行為防止、セキュリティ、コンプライアンス
  • 広告、マーケティング
詳細:
デバイス ID は、不正行為や不正使用のモニタリングや広告のパフォーマンスの測定に使用されます。