-
Notifications
You must be signed in to change notification settings - Fork 16
Amazon_Publisher_Services_iOS
Amazon Publisher ServicesとAd Generation SDKをiOSで連携するためのマニュアルとなります。
本連携については、Amazon Publisher Servicesの登録がお済みのうえ、行って頂くようお願いいたします。
Amazon Publisher Servicesのドキュメント等、公式サイトよりご確認お願いいたいます。
iOS 9.0 以降
- 広告のリフレッシュ(ローテーション)を行う場合はAmazon Publisher Servicesの機能を用いて実装してください。
- Ad Generationのローテーション及び、連携SDKのアドネットワークのローテーション設定はOFFにしてください。
- Amazon Publisher Services(DTB SDK)とAmazon Mobile Ad Network SDKの併用はサポート対象外となります。
- 対象枠でカスタムタグを作成する。
- カスタムタグ認証情報として「Amazon Header Bidding」を選択する。
- アドネットワーク名を入力する。こちらは表示にのみ使用されます。
- Key/CPMをデフォルト値から変更したい場合は変更します。
-
以下の行をプロジェクトのPodfileに追加します。
pod 'AmazonPublisherServicesSDK', '~> 3.4.4'
-
pod install
を実行します
- 下記のフレームワークを追加してください。
- DTBiOSSDK.framework
- AdSupport
- CoreGraphics
- CoreTelephony
- SystemConfiguration
- CoreLocation
- Ad Generation iOSSDKバナー導入マニュアルの1. SDKをダウンロードするをご参照ください。
手動インストールを行う場合には
ADG.framework/Resources/ADG-Resources.bundle
のプロジェクトへ追加を必ず行ってください。
AppDelegate.mのdidFinishLaunchingWithOptionsにて初期設定を行います。
@import DTBiOSSDK;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// アプリケーションキーを設定する
[[DTBAds sharedInstance] setAppKey: @"YOUR_APP_KEY"];
// 下記二つはDTB SDKのバージョンが2.1.2以降の場合、記述が必須です
[DTBAds sharedInstance].mraidPolicy = CUSTOM_MRAID;
[DTBAds sharedInstance].mraidCustomVersions = @ [@"1.0", @"2.0"];
// 位置情報の取得を許容する
// [[DTBAds sharedInstance] setUseGeoLocation:YES];
// 下記二つはアプリリリース時は呼び出さないでください
// [[DTBAds sharedInstance] setLogLevel:DTBLogLevelAll]; // ログレベル
// [[DTBAds sharedInstance] setTestMode:YES]; // テストモード
return YES;
}
DTB SDKの初期設定は必ずメインスレッド上で行う必要があります。
@import DTBiOSSDK;
@import ADG;
@interface ViewController () <DTBAdCallback, ADGManagerViewControllerDelegate>
// width,height,slotidの指定
DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:50 andSlotUUID:@"your_dtb_slot_id"];
DTBAdLoader *adLoader = [DTBAdLoader new];
[adLoader setSizes:size, nil];
[adLoader loadAd:self];
- DTBSDKが生成するbid情報(DTBAdResponse)の有効期間は10分となります。
- DTBAdResponseパラメータの付与以外は通常のAd Genrationの広告リクエストと同様です。
// Amazon広告リクエスト成功時
- (void)onSuccess: (DTBAdResponse *)adResponse {
// Amazon広告リクエスト成功時は
// DTBAdResponseのパラメータを付与した上でAd Generationの広告のリクエストを行います。
[self loadAdg:adResponse];
}
// Amazon広告リクエスト失敗時
- (void)onFailure: (DTBAdError)error {
// Amazon広告リクエスト失敗時は
// DTBAdResponseのパラメータを付与せずAd Generationの広告のリクエストを行います。
[self loadAdg:nil];
}
- (void)loadAdg: (DTBAdResponse *)adResponse {
// ADGManagerViewControllerクラスのインスタンスとしてself.adgが定義されているものとする
// self.adViewが広告表示領域であるとする。
self.adg = [[ADGManagerViewController alloc] initWithLocationID:@"YOUR_ADGENERATION_AD_ID"
adType:kADG_AdType_Sp
rootViewController:self];
[self.adg addAdContainerView:self.adView]; // 広告Viewを配置するViewを指定
// Amazon広告パラメータのセット
if (adResponse) {
[self.adg addHeaderBiddingParamsWithAmznAdResponse:adResponse];
}
self.adg.delegate = self;
[self.adg loadRequest]; // Ad Generation広告リクエスト
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
- (void)dealloc {
// インスタンスの破棄
self.adg.delegate = nil;
self.adg = nil;
}
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController {
NSLog(@"Received an ad.");
}
- (void)ADGManagerViewControllerFailedToReceiveAd:(ADGManagerViewController *)adgManagerViewController
code:(kADGErrorCode)code {
NSLog(@"Failed to receive an ad.");
// エラー時のリトライは特段の理由がない限り必ず記述するようにしてください。
switch (code) {
case kADGErrorCodeNeedConnection: // ネットワーク不通
case kADGErrorCodeExceedLimit: // エラー多発
case kADGErrorCodeNoAd: // 広告レスポンスなし
break;
default:
[adgManagerViewController loadRequest];
break;
}
}
- (void)ADGManagerViewControllerDidTapAd:(ADGManagerViewController *)adgManagerViewController{
NSLog(@"Did tap ad.");
}
-
広告のオートリフレッシュ(ローテーション)はAd Generationの機能を使わずにDTB SDKの
DTBAdLoader
に設定ください。
Ad Generationのローテーション及び、連携SDKのアドネットワークのローテーション設定はOFFにしてください。[adLoader setAutoRefresh:45]; // 45秒毎にリフレッシュを行う
-
自動更新を必ず停止してください。自動更新を停止する際の推奨場所はviewDidDisappearです。自動更新処理を不適切に使用するとインプレッション数に矛盾が生じる恐れがあります。
[adLoader stop];
注意:
- 広告の自動更新処理を停止し、DTBAdLoaderで使用されているリソースを解放することは、重要です。広告の自動更新処理は、明示的に停止しない限り続行されます。その場合、想定外の挙動になり、またインプレッション数が少なくなります。
- loadAd を呼び出す前に自動更新のプロパティを設定します。loadAdを1回呼び出す際、DTBAdLoader のインスタンスを1つだけ使用してください。また、stop()が呼び出さるとインスタンスを再使用することはできません。
onSuccess
やonFailure
コールバック等で、Viewの上に重ねてViewを生成しないでください。新しいViewを作る場合、以前のViewをクリアするようにしてください。- オートリフレッシュは60秒がデフォルトであり、20秒未満に設定した場合、自動的に60秒に上書きされます。
-
DTBAdLoaderインスタンスが不要になったタイミングでnilのセットをしてください。
self.adLoader = nil;
@import DTBiOSSDK;
@import ADG;
@interface ViewController () <DTBAdCallback, ADGInterstitialDelegate>
// slotidの指定
DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:@"your_dtb_slot_id"];
DTBAdLoader *adLoader = [DTBAdLoader new];
[adLoader setSizes:size, nil];
[adLoader loadAd:self];
- DTBSDKが生成するbid情報(DTBAdResponse)の有効期間は10分となります。
- DTBAdResponseパラメータの付与以外は通常のAd Genrationの広告リクエストと同様です。
- Amazon Publisher Servicesのインタースティシャルは全画面に表示されるインタースティシャルとなります。
RTBによる広告配信時も全画面インタースティシャルの表示を行うために、ADGInterstitial
のisFullScreen
プロパティにYES
のセットが必要となります。
// Amazon広告リクエスト成功時
- (void)onSuccess: (DTBAdResponse *)adResponse {
// Amazon広告リクエスト成功時は
// DTBAdResponseのパラメータを付与した上でAd Generationの広告のリクエストを行う。
[self loadAdgInterstitial:adResponse];
}
// Amazon広告リクエスト失敗時
- (void)onFailure: (DTBAdError)error {
// Amazon広告リクエスト失敗時は
// DTBAdResponseのパラメータを付与せずAd Generationの広告のリクエストを行う。
[self loadAdgInterstitial:nil];
}
- (void) loadAdgInterstitial: (DTBAdResponse *)adResponse {
NSDictionary *adgparam = @{
@"locationid" : @"YOUR_ADGENERATION_AD_ID",
@"adtype" : @(kADG_AdType_Sp)
};
// ADGInterstitialクラスのインスタンスとしてself.interstitialが定義されているものとする
self.interstitial = [[ADGInterstitial alloc] init];
[self.interstitial setLocationId:@"your_adgeneration_ad_id"];
self.interstitial.delegate = self;
self.interstitial.isFullscreen = YES;
// Amazon広告パラメータのセット
if(adResponse){
[self.interstitial addHeaderBiddingParamsWithAmznAdResponse:adResponse];
}
[self.interstitial preload];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
// 広告非表示
[self.interstitial dismiss];
}
- (void)dealloc {
self.interstitial.delegate = nil;
self.interstitial = nil;
}
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController {
NSLog(@"Received an ad.");
[self.interstitial show];
}
- (void)ADGManagerViewControllerFailedToReceiveAd:(ADGManagerViewController *)adgManagerViewController
code:(kADGErrorCode)code {
NSLog(@"Failed to receive an ad.");
// エラー時のリトライは特段の理由がない限り必ず記述するようにしてください。
switch (code) {
case kADGErrorCodeNeedConnection: // ネットワーク不通
case kADGErrorCodeExceedLimit: // エラー多発
case kADGErrorCodeNoAd: // 広告レスポンスなし
break;
default:
[adgManagerViewController loadRequest];
break;
}
}
- (void)ADGManagerViewControllerDidTapAd:(ADGManagerViewController *)adgManagerViewController {
NSLog(@"Did tap ad.");
}
- (void)ADGInterstitialClose {
NSLog(@"Closed interstitial ads.");
}
テストモードを有効にするには、以下のコードを広告リクエストより前に実行してください。
[[DTBAds sharedInstance] setTestMode:YES];
注: テスト広告は属性の資格がないため、本番ではテストコードを忘れずに削除してください。
通信の検証を行う場合は、下記の公式サイトを参考に検証を行ってください。
Sending Artifacts to APS for Verification
Mobile Integration Self-Check Guide