Amazon Publisher Services(APS)のバナー広告の導入

はじめに

APS SDKの初期化が必要です。APSの設定をご覧になり、SDKの初期化を先におこなってください。

APSバナーへのリクエストを行う

App Keyの登録

AdRegistration.getInstance("YOUR_APP_KEY", getApplicationContext());

DTBAdSizeのインスタンスを生成します

広告サイズは実際に表示するバナー広告のサイズを、YOUR_SLOT_UUIDには営業担当がお知らせしたIDを入力してください。

DTBAdSize adSize = new DTBAdSize(320, 50, "YOUR_SLOT_UUID");

DTBAdLoaderのインスタンスを生成し、DTBAdSizeを設定する

final DTBAdRequest adLoader = new DTBAdRequest();
adLoader.setSizes(adSize);

APSの入札リクエストとコールバックの設定

loadAdを呼び出して入札リクエストを行います。

APSが入札した場合はonSuccessが、入札しなかった場合はonFailureが呼ばれます。 APSの入札結果を元に、AdMobへ広告リクエストを行います。

onSuccessが呼ばれた場合は、AdMobへCustomEventExtrasBundleを付与して広告リクエストを行い、 onFailureが呼ばれた場合は、AdMobへ追加情報を付与せずにリクエストを行います。 AdMobの実装についてはこちらをご覧ください。

loader.loadAd(new DTBAdCallback() {

    // No APS bid returned
    @Override
    public void onFailure(AdError adError) {
        AdView adView = (AdView) findViewById(R.id.aps_ad_view);

        AdRequest request = new AdRequest.Builder().build();
        adView.loadAd(request);
    }

    // APS bid returned
    @Override
    public void onSuccess(DTBAdResponse dtbAdResponse) {
        AdView adView = (AdView) findViewById(R.id.aps_ad_view);

        Bundle bundle = dtbAdResponse.getRenderingBundle();

        @SuppressWarnings("unchecked")
        AdRequest request = new AdRequest.Builder().addCustomEventExtrasBundle(APSAdMobCustomBannerEvent.class, bundle).build();
        adView.loadAd(request);
    }
});

実装例

import com.amazon.admob_adapter.APSAdMobCustomBannerEvent;
import com.amazon.device.ads.AdError;
import com.amazon.device.ads.AdRegistration;
import com.amazon.device.ads.DTBAdCallback;
import com.amazon.device.ads.DTBAdRequest;
import com.amazon.device.ads.DTBAdResponse;
import com.amazon.device.ads.DTBAdSize;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdRegistration.getInstance("YOUR_APP_KEY", getApplicationContext());

        DTBAdSize adSize = new DTBAdSize(320, 50, "YOUR_SLOT_UUID");

        final DTBAdRequest adLoader = new DTBAdRequest();
        adLoader.setSizes(adSize);

        loader.loadAd(new DTBAdCallback() {

            // No APS bid returned
            @Override
            public void onFailure(AdError adError) {
                AdView adView = (AdView) findViewById(R.id.aps_ad_view);

                AdRequest request = new AdRequest.Builder().build();
                adView.loadAd(request);
            }

            // APS bid returned
            @Override
            public void onSuccess(DTBAdResponse dtbAdResponse) {
                AdView adView = (AdView) findViewById(R.id.aps_ad_view);

                Bundle bundle = dtbAdResponse.getRenderingBundle();

                @SuppressWarnings("unchecked")
                AdRequest request = new AdRequest.Builder().addCustomEventExtrasBundle(APSAdMobCustomBannerEvent.class, bundle).build();
                adView.loadAd(request);
            }
        });
    }
}