Amazonモバイル広告iOS APIとメディエーションSDKを併用する方法
Amazonモバイル広告ネットワークのバナー広告とインタースティシャル広告は、優れたメディエーターSDKを利用して取得することもできます。統合に関する一般的なガイドラインを以下に示します。
複数のSDKからの広告の読み込み
Amazonモバイル広告APIは、ほかの広告SDKと組み合わせて使用できます。最初に、Amazonモバイル広告ネットワークを確認することをお勧めします。Amazonの広告を読み込む前に、AmazonAdViewDelegateから、成功と失敗のオプションコールバックを実装してください。こうすると、Amazonモバイル広告ネットワークから広告を使用できない場合に、adViewDidFailToLoad
コールバックメソッドを使用して別の広告SDKを呼び出すことができます。
最初にAmazon Ad Networkから広告を読み込むプログラムの簡単な例を以下に示します。読み込みに失敗すると、別のSDKを介して2回目の広告リクエストを実行します。
public class SimpleAdActivity extends Activity implements AdListener
{
- (void)viewDidLoad {
[super viewDidLoad];
// 広告を読み込みます
// サイズ320x50のAmazonAdViewインスタンスを作成します。
self.amazonAdView = [AmazonAdView amazonAdViewWithAdSize:AmazonAdSize_320x50];
// adOptionsを設定します。
AmazonAdOptions *options = [AmazonAdOptions options]; options.isTestRequest = YES;
// ViewControllerをデリゲートに登録してコールバックを受信します。
amazonAdView.delegate = self;
// loadAdを呼び出します
[amazonAdView loadAd:options];
}
}
AmazonAdViewDelegate
プロトコルをViewController
内に実装する方法を以下に示します。ユーザーが広告をクリックしたときにブラウザビューなどのモーダルビューを表示/非表示にするためにViewControllerが使用されます。このViewControllerをAmazonAdView
が認識できるように、viewControllerForPresentingModelView
プロトコルメソッドを実装する必要があります。また、オプションのadViewDidLoadコールバックメソッド内で、必要に応じてAmazonAdViewを親ビューに追加することもできます。
// #pragma mark AmazonAdViewDelegate
// @required
- (UIViewController *)viewControllerForPresentingModalView {
return self;
}
- (void) adViewDidLoad:(AmazonAdView *)view {
NSLog(@"広告が読み込まれました");
if (!self.hasAmazonAdView) {
[self.otherSDKAdView removeFromSuperview];
}
// viewControllerのビューにAmazonAdViewを追加します。
[self.view addSubView:self.amazonAdView];
self.hasAmazonAdView = YES;
}
- (void)adViewDidFailToLoad:(AmazonAdView *)view withError:(AmazonAdError *)error {
NSLog(@"広告を読み込めませんでした。エラーコード%d:%@", error.errorCode, error.errorDescription);
if (self.hasAmazonAdView) {
[self.amazonAdView removeFromSuperView];
}
// 別のSDKのビュー用のadRequestを作成し、それをこのビューに追加します。
[self.view addSubView:otherSDKAdView];
}
カスタムイベントを使用してDFPと統合する
Amazonモバイル広告APIを統合するには、GADCustomEventBannerプロトコルに準拠したクラスにより、Amazon広告を読み込むrequestBannerAd:parameter:label:request:
メソッドを実装する必要があります。
Amazon広告ネットワークからバナー広告を読み込むDFPバナーの例に基づくコードの抜粋を以下に示します。
#pragma mark GADCustomEventBanner impl
- (void)requestBannerAd:(GADAdSize)adSize
parameter:(NSString *)serverParameter
label:(NSString *)serverLabel
request:(GADCustomEventRequest *)request
{
// 前提:adSizeが、Amazon広告ネットワークで使用できる広告サイズのいずれかに一致すること
// 使用可能な全サイズについては、AmazonAdOptions.hを参照してください
// サイズが一致しない場合は、Amazon広告サイズを明示的に指定する必要があります
amazonAdView = [AmazonAdView amazonAdViewWithAdSize:adSize.size];
amazonAdView.delegate = self;
// テスト広告を読み込みます
AmazonAdOptions *options = [AmazonAdOptions options];
options.isTestRequest = YES;
[amazonAdView loadAd:options];
}
#pragma mark AmazonAdViewDelegate impl
- (UIViewController *)viewControllerForPresentingModalView
{
return self;
}
- (void) adViewDidLoad:(AmazonAdView *)view
{
// 適切な場所にAmazon広告ビューを配置します。
// この例では、Google広告が既に画面上部にあるため、画面下部に配置します。
self.amazonAdView.frame = CGRectMake(0, self.view.frame.size.height - amazonAdView.frame.size.height,
self.amazonAdView.frame.size.width, self.amazonAdView.frame.size.height);
[self.view addSubview:self.amazonAdView];
NSLog(@"Amazon広告が読み込まれました");
[self.delegate customEventBanner:self didReceiveAd:amazonAdView];
}
- (void)adViewDidFailToLoad:(AmazonAdView *)view withError:(AmazonAdError *)error
{
NSLog(@"Amazon広告の読み込みが失敗しました。エラーコード%d:%@", error.errorCode, error.errorDescription);
NSError *err = [NSError errorWithDomain:@"AmazonAdError" code:error.errorCode userInfo:nil];
[self.delegate customEventBanner:self didFailAd:err];
}
- (void)adViewWillExpand:(AmazonAdView *)view
{
NSLog(@"Amazon広告が展開されます");
[self.delegate customEventBannerWillPresentModal:self];
}
- (void)adViewDidCollapse:(AmazonAdView *)view
{
NSLog(@"Amazon広告が折りたたまれました");
[self.delegate customEventBannerDidDismissModal:self];
}