インタースティシャル広告はアプリ フローの固有のブレークポイントに置かれるフルページ広告です。バナー広告と比較して 10 倍のスペースを有するインタースティシャルは、ユーザーの目を引き、お客様のモバイル ビジネスの収益を高めることが保証されています。
以下の手順に従い、インタースティシャル広告での収益化を開始してください。
アプリを追加してから、 インタースティシャルを選択して広告タイプ インタースティシャル向けのプレースメントを作成します。
インタースティシャルプレースメントを作成したら、プレースメントIDが手に入ります。
IMInterstitial
は、UIViewController
のサブクラスで、ユーザーのタッチに応答する全画面広告を表示します。
以下の手順に従って、プログラムでインタースティシャル広告ユニットを作成します。
ヘッダーをインポートして、ViewController.h
ファイルでインタースティシャル インスタンスを宣言します。ViewController
ヘッダーファイルは次のようになります。
#import <uikit uikit.h="">
@import InMobiSDK;
@interface ViewController : UIViewController <iminterstitialdelegate>
@property (nonatomic, strong) IMInterstitial *interstitial;
@end
</iminterstitialdelegate></uikit>
インタースティシャル オブジェクトのインスタンスを作成します。ViewController.m
ファイル内の viewDidLoad
メソッドは次の様になります。
-(void)viewDidLoad {
[super viewDidLoad];
self. interstitial = [[IMInterstitial alloc] initWithPlacementId:@"Insert your placement ID here"];
self. interstitial.delegate = self;
[self.interstitial load];
}
重要事項:プレースメントIDごとに1つのオブジェクトだけを作成して、その後の広告の読み込みにはそれを再使用してください。
広告ステータスのコールバックについては、IMInterstitial
のデリゲートプロパティを実装します。以下のコールバックがサポートされます。
/*Indicates that the interstitial is ready to be shown */
- (void)interstitialDidFinishLoading:(IMInterstitial *)interstitial {
NSLog(@"interstitialDidFinishLoading");
}
/* Indicates that the interstitial has failed to receive an ad. */
- (void)interstitial:(IMInterstitial *)interstitial didFailToLoadWithError:(IMRequestStatus *)error {
NSLog(@"Interstitial failed to load ad");
NSLog(@"Error : %@",error.description);
}
/* Indicates that the interstitial has failed to present itself. */
- (void)interstitial:(IMInterstitial *)interstitial didFailToPresentWithError:(IMRequestStatus *)error {
NSLog(@"Interstitial didFailToPresentWithError");
NSLog(@"Error : %@",error.description);
}
/* indicates that the interstitial is going to present itself. */
- (void)interstitialWillPresent:(IMInterstitial *)interstitial {
NSLog(@"interstitialWillPresent");
}
/* Indicates that the interstitial has presented itself */
- (void)interstitialDidPresent:(IMInterstitial *)interstitial {
NSLog(@"interstitialDidPresent");
}
/* Indicates that the interstitial is going to dismiss itself. */
- (void)interstitialWillDismiss:(IMInterstitial *)interstitial {
NSLog(@"interstitialWillDismiss");
}
/* Indicates that the interstitial has dismissed itself. */
- (void)interstitialDidDismiss:(IMInterstitial *)interstitial {
NSLog(@"interstitialDidDismiss");
}
/* Indicates that the user will leave the app. */
- (void)userWillLeaveApplicationFromInterstitial:(IMInterstitial *)interstitial {
NSLog(@"userWillLeaveApplicationFromInterstitial");
}
/* interstitial:didInteractWithParams: Indicates that the interstitial was interacted with. */
- (void)interstitial:(IMInterstitial *)interstitial didInteractWithParams:(NSDictionary *)params {
NSLog(@"InterstitialDidInteractWithParams");
}
/ * Not used for direct integration. Notifies the delegate that the ad server has returned an ad but assets are not yet available. */
- (void)interstitialDidReceiveAd:(IMInterstitial *)interstitial {
NSLog(@"interstitialDidReceiveAd");
}
インタースティシャル広告を表示するには、次のコードを使用します。
[self.interstitial showFromViewController:self];
//[self.interstitial showFromViewController:self withAnimation:kIMInterstitialAnimationTypeCoverVertical];
以下が利用可能なアニメーションのタイプです。
kIMInterstitialAnimationTypeCoverVertical
kIMInterstitialAnimationTypeFlipHorizontal
kIMInterstitialAnimationTypeNone
重要事項:
showFromViewController
に対して呼び出す前にinterstitialDidFinishLoading
デリゲートが発生していることを確認してください。そうでない場合、エラーコールバックinterstitial:didFailToPresentScreenWithError:
が発生します。インタースティシャルのステータスを確認し続けながら、広告が完全に読み込まれた場合のみ表示を呼び出します。[self.interstitial load];
を呼び出す必要があります。これを実行しないと、showFromViewController
を再度呼び出せなくなります。時には、広告品質のチェックをすべて逃れた不正な広告主様が、無関係で不快なものや混乱するものをユーザーに表示することで、アプリのユーザーエクスペリエンスを損なうことになります。 このような状況への対応策として、広告インスタンスのcreativeIDを取得し、InMobiの連絡先に暗号化されたクcreativeIDでレポートし直します。
mInterstitialAd.creativeId // mInterstitialAd
はサンプルインスタンスです。
[ツール] - [診断]に進み、テストモードを グローバルオンかセレクティブオンのどちらかに切り替えます。
アプリに対する広告インテグレーションが初めての場合 | テストモードをグローバルオンに設定します。 |
特定のテスト用端末にのみテスト用広告を配信したい場合 - アプリに対して既にSDKを実装済みで、特定の更新部分などのテストをテスト用の端末に限定して実施する必要がある場合。 |
テストモードをセレクティブオンに設定します。
デバイスセクションでテスト端末を登録します。
すでに登録済みのデバイスがある場合は、その端末を選択し、テストモードを有効に設定できます。 |
注意: テスト完了後、本番稼働する前にテストモードをオフにしなければなりません。そうしないと、お客様のアプリは収益化できません。
これで、テスト広告を取得するための準備が整いました。
デバイスIDの取得
ここでのデバイスIDは、基本的にIDFAまたはIFA (広告の識別子)を指します。デバイスIDを取得するための、最も簡単なアプローチは、SDKのログレベルを“debug”に設定することです。デバッグログを有効にするには、以下を AppDelegate.m
ファイル内の didFinishLaunchingWithOptions
メソッドに追加することです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Initialize InMobi SDK with your account ID
[IMSdk initWithAccountID:@"Insert InMobi account ID here"];
//Set log level to Debug
[IMSdk setLogLevel:kIMSDKLogLevelDebug];
// Do your stuff.
return YES;
}
デバッグモードでは、デバイスIDは以下の様にXCode開発者コンソールに出力されます。 “Publisher device ID is <device-id>”</device-id>
お客様はこのデバイスIDを デバイスIDボックスに入力できます。
[InMobi] InMobi SDK initialized with account id: <your account="" here="" id="" />
[InMobi] Fetching interstitial ad for placement id: <your here="" id="" placement="" />
[InMobi] Publisher device id is <device here="" id="" />
[InMobi] Interstitial ad successfully fetched for placement id: <your here="" id="" placement="" />
** ERROR ** [InMobi] ___ Please initialize the SDK before creating a <ad format="" />
** ERROR ** [InMobi] ___ Account id cannot be null or empty. Please provide a valid Account id.
[InMobi] Invalid account id passed to init. Please provide a valid account id.
キーとなるログの一覧を以下に記します。
SDK初期化時
シナリオ | ログ レベル | ログ |
NULLまたは空白のアカウントIDを渡した場合。 | Error | Account id cannot be null or empty. Please provide a valid Account id. |
有効なアカウントIDを渡した場合。 | Debug | InMobi SDK initialized with account id: <account id="" /> |
無効なアカウントIDを渡した場合。 | Error | Invalid account id passed to init. Please provide a valid account id. |
より新しいバージョンのSDKが入手可能な場合。 | Debug | A newer version (ver. 6.0.0) of the InMobi SDK is available! You are currently on an older version (ver. 5.3.1). Download the latest InMobi SDK from http://www.inmobi.com/products/sdk/#downloads |
広告のライフサイクルで出力される主なログ
シナリオ | ログ レベル | ログ |
ネットワークが使用できない状況で広告がリクエストされた場合。 | Error | Network not reachable currently. Please try again. |
広告が読み込み中または利用可能な状態のときに広告がリクエストされた場合。 | Error | An ad load is already in progress. Please wait for the load to complete before requesting for another ad (Placement id : <placement id="" /> ). |
ユーザーが広告を閲覧中に広告がリクエストされた場合。 | Error | An ad is currently being viewed by the user. Please wait for the user to close the ad before requesting for another ad (Placement id : <placement id="" /> ). |
デバイスID | Debug | Publisher device id is <device id="" /> |
インタースティシャル広告インテグレーション時のログ
シナリオ | ログ レベル | ログ |
SDKが初期化されていない場合。 | Error | Please initialize the SDK before creating a interstitial ad |
無効なプレースメントIDでインタースティシャルを作成した場合。 | Error | Please provide a valid placement id to create a interstitial ad |
インタースティシャル広告の読み込みが開始された場合。 | Debug | Fetching an interstitial ad for placement id: <placement id="" /> |
広告が正常に取得された場合。 | Debug | Interstitial ad successfully fetched for placement id: <placement id="" /> |
広告の取得に失敗した場合。 | Error | Failed to fetch Interstitial ad for placement id: <placement id="" /> with error: <status code="" message="" /> |
Webビューでインタースティシャル広告の読み込みが開始された場合。 | Debug | Started loading Interstitial ad markup in the webview for placement id: <placement id="" /> |
インタースティシャル広告が正常にWebビューに読み込まれた場合。 | Debug | Successfully loaded Interstitial ad markup in the webview for placement id: <placement id="" /> |
Webビューにインタースティシャル広告を読み込めなかった場合。 | Error | Failed to load the Interstitial markup in the webview for placement id: <placement id="" /> |
インタースティシャル広告が表示された場合。 | Debug | Successfully displayed Interstitial for placement id: <placement id="" /> |
インタースティシャル広告が閉じられた場合。 | Debug | Interstitial ad dismissed for placement id: <placement id="" /> |
広告のステータスが表示Readyの前に広告を表示しようとした場合。 | Error | Ad Load is not complete. Please wait for the Ad to be in a ready state before calling show |
全画面広告は、ビューコントローラーなしに表示できません。ビューコントローラーを渡して全画面広告を表示してください。 | Error | Full screen ad cannot be displayed without a view controller. Please pass a view controller to present the full screen ad. |