iOS ガイドライン | バナー広告

バナー広告は、グラフィカル広告で、静止/アニメーション画像とテキストの組み合わせによって、マーケティングメッセージを伝達したり、ユーザーに行動を起こさせたりすることを目的としています。すべてのタイプのアプリがバナー広告を収益化に活用できます。

以下に従い、バナー広告での収益化を開始してください。

バナー広告の設定

アプリを追加してから、 バナー広告を選択して広告タイプ バナー向けのプレースメントを作成します。

バナープレースメントを作成したら、プレースメントIDが手に入ります。

バナー広告の作成

IMBannerは、UIViewのサブクラスで、ユーザーのタッチ操作に応答するHTML5 広告を表示します。

InMobi SDK はバナー広告を実装する 2 つのメカニズムを備えています。

a. プログラムによるインスタンス化

  1. ヘッダーをインポートして、ViewController.hファイルでバナーインスタンスを宣言します。ViewControllerヘッダーファイルは次のようになります。
    #import <UIKit/UIKit.h>
    @import InMobiSDK;
    @interface ViewController : UIViewController <IMBannerDelegate>
    @property (nonatomic, strong) IMBanner *banner;
    @end
    		
  2. バナーオブジェクトのインスタンスを作成します。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秒でなければなりません。

  3. UIViewControllerdeallocメソッドでは、デリゲートをnil に設定します。バナーをリリースする際はデリゲートをnil に設定する必要があります。
    -(void)dealloc {
    self.banner.delegate = nil;
    }
    		
  4. 広告ステータスのコールバックについては、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");
    }
    		
  5. バナーオブジェクトの更新時には、以下のトランジション(アニメーション)を使用できます。
    • UIViewAnimationTransitionNone
    • UIViewAnimationTransitionFlipFromLeft
    • UIViewAnimationTransitionFlipFromRight
    • UIViewAnimationTransitionCurlUp
    • UIViewAnimationTransitionCurlDown
    self.banner.transitionAnimation = UIViewAnimationTransitionCurlUp;
    		

B. インターフェイスビルダーによるバナーインスタンスの作成

  1. ViewControllerビュー内の広告を表示する位置に、UIView を配置します。
  2. バナーフレームを設定します。
  3. UIViewのクラスをIMBannerに設定します。
  4. ViewControllerヘッダーファイルで、IMBannerIBOutletインスタンスを宣言します。
  5. これを Storyboard のViewControllerScene の UIView(Banner)でアウトレットとして設定します。

取得CreativeID

時には、広告品質のチェックをすべて逃れた不正な広告主様が、無関係で不快なものや混乱するものをユーザーに表示することで、アプリのユーザーエクスペリエンスを損なうことになります。 このような状況への対応策として、広告インスタンスのcreativeIDを取得し、InMobiの連絡先に暗号化されたクcreativeIDでレポートし直します。

mBannerAd.creativeId // mBannerAdはサンプルインスタンスです。

インテグレーションのテスト

  1. InMobiポータルでテストモードを設定します。

    [ツール] - [診断]に進み、テストモードを グローバルオンセレクティブオンのどちらかに切り替えます。

    アプリに対する広告インテグレーションが初めての場合 テストモードグローバルオンに設定します。
    特定のテスト用端末にのみテスト用広告を配信したい場合 -

    アプリに対して既にSDKを実装済みで、特定の更新部分などのテストをテスト用の端末に限定して実施する必要がある場合。
    テストモードセレクティブオンに設定します。

    デバイスセクションでテスト端末を登録します。

    1. デバイスIDボックスに、デバイスIDを入力します。
    2. デバイス名ボックスで、任意の名前を設定します。
    3. [デバイスを追加]をクリックしてテスト端末を追加登録します。

    すでに登録済みのデバイスがある場合は、その端末を選択し、テストモードを有効に設定できます。

    注意: テスト完了後、本番稼働する前にテストモードをオフにしなければなりません。そうしないと、お客様のアプリは収益化できません。

    これで、テスト広告を取得するための準備が整いました。

    デバイス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>”

    お客様はこのデバイスIDを デバイスIDボックスに入力できます。

  2. [診断]タブ上でテストモード時の広告ユニット別のレポート値を確認できます。実装が正しく行われたか確認するのに役立ちます。

  3. また、バナー広告の読み込みに成功すると、コンソール内に以下のInMobi SDKのログも出力されるはずです。

    [InMobi] InMobi SDK initialized with account id: <your account id here>

    [InMobi] Fetching Banner ad for placement id: <your placement id here>

    [InMobi] Publisher device id is <device id here>

    [InMobi] Banner ad successfully fetched for placement id: <your placement id here>

  4. これで、InMobiテスト広告もアプリケーション上で表示できます。
  5. 広告の取得前にSDKが正しく初期化されない場合は、通常以下のログが表示されます。

    ** ERROR ** [InMobi] ___ Please initialize the SDK before creating a <ad format> 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>