バナー広告は、グラフィカル広告で、静止/アニメーション画像とテキストの組み合わせによって、マーケティングメッセージを伝達したり、ユーザーに行動を起こさせたりすることを目的としています。すべてのタイプのアプリがバナー広告を収益化に活用できます。
以下に従い、バナー広告での収益化を開始してください。
アプリを追加してから、 バナー広告を選択して広告タイプ バナー向けのプレースメントを作成します。
バナープレースメントを作成したら、プレースメントIDが手に入ります。
IMBanner
は、UIView
のサブクラスで、ユーザーのタッチ操作に応答するHTML5 広告を表示します。
InMobi SDK はバナー広告を実装する 2 つのメカニズムを備えています。
a. プログラムによるインスタンス化
ヘッダーをインポートして、ViewController.h
ファイルでバナーインスタンスを宣言します。ViewController
ヘッダーファイルは次のようになります。
#import <uikit uikit.h="">
@import InMobiSDK;
@interface ViewController : UIViewController <imbannerdelegate>
@property (nonatomic, strong) IMBanner *banner;
@end
</imbannerdelegate></uikit>
バナーオブジェクトのインスタンスを作成します。ViewController.m
ファイルは次のようになります。
- (void)viewDidLoad {
[super viewDidLoad];
self.banner = [[IMBanner alloc] initWithFrame:CGRectMake(0, 0, 320, 50)
placementId:@"Insert your placement ID here"];
self.banner.delegate = self;
[self.view addSubview:self.banner];
[self.banner load];
//[self.banner shouldAutoRefresh:YES];
//[self.banner setRefreshInterval:90];
}
デフォルトにより IMBanner
は60秒ごとに更新されます。更新インターバルをカスタム設定したり、AutoRefreshをオフにして手動で広告を更新するともできます。手動、自動共に、次の広告に更新するまでの最小時間のインターバルは20秒でなければなりません。
UIViewController
のdealloc
メソッドでは、デリゲートをnil に設定します。バナーをリリースする際はデリゲートをnil に設定する必要があります。
-(void)dealloc {
self.banner.delegate = nil;
}
広告ステータスのコールバックについては、IMBanner
のデリゲートプロパティを実装します。以下のコールバックがサポートされます。
/*Indicates that the banner has received an ad. */
- (void)bannerDidFinishLoading:(IMBanner *)banner {
NSLog(@"bannerDidFinishLoading");
}
/* Indicates that the banner has failed to receive an ad */
- (void)banner:(IMBanner *)banner didFailToLoadWithError:(IMRequestStatus *)error {
NSLog(@"banner failed to load ad");
NSLog(@"Error : %@", error.description);
}
/* Indicates that the banner is going to present a screen. */
- (void)bannerWillPresentScreen:(IMBanner *)banner {
NSLog(@"bannerWillPresentScreen");
}
/* Indicates that the banner has presented a screen. */
- (void)bannerDidPresentScreen:(IMBanner *)banner {
NSLog(@"bannerDidPresentScreen");
}
/* Indicates that the banner is going to dismiss the presented screen. */
- (void)bannerWillDismissScreen:(IMBanner *)banner {
NSLog(@"bannerWillDismissScreen");
}
/* Indicates that the banner has dismissed a screen. */
- (void)bannerDidDismissScreen:(IMBanner *)banner {
NSLog(@"bannerDidDismissScreen");
}
/* Indicates that the user will leave the app. */
- (void)userWillLeaveApplicationFromBanner:(IMBanner *)banner {
NSLog(@"userWillLeaveApplicationFromBanner");
}
/* Indicates that the banner was interacted with. */
-(void)banner:(IMBanner *)banner didInteractWithParams:(NSDictionary *)params{
NSLog(@"bannerdidInteractWithParams");
}
/*Indicates that the user has completed the action to be incentivised with .*/
-(void)banner:(IMBanner*)banner rewardActionCompletedWithRewards:(NSDictionary*)rewards{
NSLog(@"rewardActionCompletedWithRewards");
}
UIViewAnimationTransitionNone
UIViewAnimationTransitionFlipFromLeft
UIViewAnimationTransitionFlipFromRight
UIViewAnimationTransitionCurlUp
UIViewAnimationTransitionCurlDown
self.banner.transitionAnimation = UIViewAnimationTransitionCurlUp;
B. インターフェイスビルダーによるバナーインスタンスの作成
ViewController
ビュー内の広告を表示する位置に、UIView
を配置します。UIView
のクラスをIMBanner
に設定します。ViewController
ヘッダーファイルで、IMBanner
の IBOutlet
インスタンスを宣言します。ViewController
Scene の UIView(Banner)
でアウトレットとして設定します。時には、広告品質のチェックをすべて逃れた不正な広告主様が、無関係で不快なものや混乱するものをユーザーに表示することで、アプリのユーザーエクスペリエンスを損なうことになります。 このような状況への対応策として、広告インスタンスのcreativeIDを取得し、InMobiの連絡先に暗号化されたクcreativeIDでレポートし直します。
mBannerAd.creativeId // mBannerAd
はサンプルインスタンスです。
[ツール] - [診断]に進み、テストモードを グローバルオンかセレクティブオンのどちらかに切り替えます。
アプリに対する広告インテグレーションが初めての場合 | テストモードをグローバルオンに設定します。 |
特定のテスト用端末にのみテスト用広告を配信したい場合 - アプリに対して既に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 Banner ad for placement id: <your here="" id="" placement="" />
[InMobi] Publisher device id is <device here="" id="" />
[InMobi] Banner ad successfully fetched for placement id: <your here="" id="" placement="" />
** ERROR ** [InMobi] ___ Please initialize the SDK before creating a <ad format=""> ad </ad>
** 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 Banner ad |
無効、またはNULLのプレースメントIDでバナーを作成した場合。 | Error | Please provide a valid placement id to create a Banner ad |
無効なプレースメントIDでIB/xml からバナーを読み込んだ場合。 | Error | Please provide a valid placement id to create a Banner ad |
バナー広告の読み込みが開始された場合。 | Debug | Fetching a Banner ad for placement id: <placement id="" /> |
広告が正常に取得された場合。 | Debug | Banner ad successfully fetched for placement id: <placement id="" /> |
広告の取得に失敗した場合。 | Debug | Failed to fetch Banner ad for placement id: <placement id="" /> with error: <status code="" message="" /> |
Webビューでバナー広告の読み込みが開始された場合。 | Debug | Started loading Banner ad markup in the webview for placement id: <placement id="" /> |
バナー広告が正常にWebビューに読み込まれた場合。 | Debug | Successfully loaded Banner ad markup in the webview for placement id: <placement id="" /> |
Webビューにバナー広告を読み込めなかった場合。 | Debug | Failed to load the Banner markup in the webview for placement id: <placement id="" /> |
バナーの更新を開始した場合。 | Debug | Initiating Banner refresh for placement id: <placement id="" /> |