Amazonモバイル広告APIをメディエーションSDKと共に使用する


Amazonモバイル広告APIをメディエーションSDKと共に使用する

Amazonモバイル広告ネットワークのバナー広告およびインタースティシャル広告は、優れたメディエーターSDKを利用して取得することもできます。以下に、統合に関する一般的なガイドラインを示します。

他のメディエーターSDKとの統合

: 以下のガイドラインは、サードパーティのメディエーターSDKを利用して、Amazonモバイル広告ネットワークからバナー広告の読み込みを試行するユーザーにのみ適用されます。

  1. 広告を再読み込みするときに、同じ画面上にある既存の広告を新しい広告に置き換えるアプリ(定期的に広告を再読み込みするアプリなど)では、エクスパンドされたリッチメディア広告をユーザーが既に操作しているときに、新しい広告が読み込まれないようにする特別な措置を講じる必要があります。これは、以下のいくつかの方法で達成できます。

    • (推奨)広告がエクスパンドされているときには広告の読み込みアクションを実行できないようにするロジックを追加します。たとえば、広告がエクスパンドされているときはtrueに、広告が折りたたまれているときはfalseに設定されるブール変数isExpandedを定義します。これで、isExpandedがfalseであることを確認してから、メディエーターSDKに広告をリクエストすることができます。現在の広告がエクスパンドされる前に広告の読み込みが開始されるケースに対処するには、この方法と、以下に示す他のいずれかの方法を組み合わせる必要があります。
    • (推奨)新しい広告を、別の非表示広告ビューに読み込み、広告の読み込みが終了してから、その広告ビューと現在の広告ビューを入れ替えます。現在の広告がエクスパンドされているときに新しい広告の読み込みが開始されないようにするには、この方法と上記の方法を組み合わせることを推奨します。
    • (推奨)親ビューが破棄される場合を除き、広告の自動更新動作を削除します。
    • 新しい広告を読み込むときに既存の広告ビューを破棄します。
    • 広告の読み込み中はクリック操作を無効にし、新しい広告の読み込みが完了したら、再度有効にします。
  2. AdActivityアクティビティがAndroidManifest.xmlファイルに宣言されていることを確認する必要があります。詳しくは、クイックスタートガイドの手順2を参照してください。

  3. アプリを登録する前に、Amazonモバイル広告ネットワークを使用するすべてのアプリ(Amazon Mobile Ad Networkの使用にメディエーターのSDKを利用しているアプリを含む)が開発者向け事前チェックリストの条件を満たしていることを確認してください。テストを開始する前にメディエーターに連絡して、Amazonテスト広告を有効にする必要があります。また、テストの完了後もメディエーターに連絡して、Amazonテスト広告を無効にする必要があります。メディエーターのSDKを利用したAmazonモバイル広告ネットワークの統合に関する特定の補足情報については、メディエーターに問い合わせてください。

複数のSDKから広告を読み込む

Android向けAmazonモバイル広告APIは、他の広告SDKと共に使用できます。最初に、Amazonモバイル広告ネットワークを確認することを推奨します。Amazonの広告を読み込む前に、成功および失敗用のコールバックを備えるAdListenerを実装してください。これにより、Amazonモバイル広告ネットワークから広告を使用できない場合は、AdListener.onAdFailedToLoadコールバックメソッドを使用して別の広告SDKを呼び出すことができます。

以下に、最初にAmazon Ad Networkから広告を読み込むプログラムの単純な例を示します。読み込みに失敗すると、AdMobのSDKを介して2回目の広告リクエストを実行します。


public class SimpleAdActivity extends Activity implements AdListener
{
    private ViewGroup adViewContainer;
    private com.amazon.device.ads.AdLayout amazonAdView;
    private com.google.android.gms.ads.AdView admobAdView;
    private boolean amazonAdEnabled;
    ...

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        com.amazon.device.ads.AdRegistration.setAppKey(APP_ID);

        // 広告ビューを初期化します
        amazonAdView = new com.amazon.device.ads.AdLayout(this, com.amazon.device.ads.AdSize.SIZE_320x50);
        amazonAdView.setListener(this);
        admobAdView = new com.google.android.gms.ads.AdView(this);
        admobAdView.setAdSize(com.google.android.gms.ads.AdSize.BANNER);
        admobAdView.setAdUnitId(MY_AD_UNIT_ID);

        // ビューコンテナを初期化します
        adViewContainer = (ViewGroup)findViewById(R.id.ad_view);
        amazonAdEnabled = true;
        adViewContainer.addView(amazonAdView);

        amazonAdView.loadAd(new com.amazon.device.ads.AdTargetingOptions());
    }

    ...

    public void refreshAd()
    {
        amazonAdView.loadAd(new com.amazon.device.ads.AdTargetingOptions());
    }

    public void onAdLoaded(com.amazon.device.ads.AdLayout view, AdProperties adProperties)
    {
        if (!amazonAdEnabled)
        {
            amazonAdEnabled = true;
            adViewContainer.removeView(admobAdView);
            adViewContainer.addView(amazonAdView);
        }
    }

    public void onAdFailedToLoad(com.amazon.device.ads.AdLayout view, AdError error)
    {
        // リクエストを再実行するためにAdMob SDKを呼び出します
        if (amazonAdEnabled)
        {
            amazonAdEnabled = false;
            adViewContainer.removeView(amazonAdView);
            adViewContainer.addView(admobAdView);
        }

        admobAdView.loadAd((new com.google.android.gms.ads.AdRequest.Builder()).build());
    }
}