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モバイル広告ネットワークを利用するすべてのアプリ(メディエーターのSDKを通じてAmazonモバイル広告ネットワークを利用するアプリを含む)が開発者向け事前チェックリストの条件を満たしていることを確認してください。テストを開始する前にメディエーターに連絡して、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());
    }
}