iOS のバナー実装

モバイルバナー広告は通常、画面の上部または下部に表示され、ユーザーのセッション中に画面に表示されます。バナー広告は、実装が簡単で、広告主の認知度を高めるための優れたツールであるため、モバイルアプリで非常に人気のある広告ユニットです。
ironSource は、静的またはアニメーションのいずれかである4種類のシステム主導バナー広告を提供します。

Before you start ironSource SDK と追加のアドネットワークアダプターがアプリケーションに正しく実装されていることを確認してください。実装の概要はこちら

ironSource SDK 7.8.0 以降、バナー実装にコンテナを使用することが可能になりました。詳細はこちら

注意!バージョン 6.15.0 に関しては、セーフエリアソリューションが ironSource SDK によって提供されません。SDK < 6.15.0 で ironSource バナーソリューションを使用していて、SDK バージョンをアップグレードしたい場合は、必ずこちらの手順に従ってください。

ステップ 1. デリゲートを実装する

ironSource SDK は、バナーアクティビティを通知するためにいくつかのデリゲートメソッドを発火します。SDK は、以下にリストされている発生しうる全てのイベントをデリゲートに通知します:

+ (void)setLevelPlayBannerDelegate:(nullable id<LevelPlayBannerDelegate>)delegate;
#pragma mark - LevelPlayBannerDelegate
/**
 Called after each banner ad has been successfully loaded, either a manual load or banner refresh
 @param adInfo The info of the ad.
 */
- (void)didLoad:(ISBannerView *)bannerView withAdInfo:(ISAdInfo *)adInfo{}

/**
 Called after a banner has attempted to load an ad but failed. 
 This delegate will be sent both for manual load and refreshed banner failures. 
 @param error The reason for the error
 */
- (void)didFailToLoadWithError:(NSError *)error{}

/**
 Called after a banner has been clicked.
 @param adInfo The info of the ad.
 */
- (void)didClickWithAdInfo:(ISAdInfo *)adInfo{}

/**
 Called when a user was taken out of the application context.
 @param adInfo The info of the ad.
 */
- (void)didLeaveApplicationWithAdInfo:(ISAdInfo *)adInfo{}

/**
 Called when a banner presented a full screen content.
 @param adInfo The info of the ad.
 */
- (void)didPresentScreenWithAdInfo:(ISAdInfo *)adInfo{}

/**
 Called after a full screen content has been dismissed.
 @param adInfo The info of the ad.
 */
- (void)didDismissScreenWithAdInfo:(ISAdInfo *)adInfo{}

リスナーの完全な実装については、こちらで確認できます。

Note: デリゲートメソッドがメインスレッドコンテキストで呼び出されることは想定しないでください。

ステップ 2. バナー広告をロードする

バナー広告をロードするには、次のメソッドを呼びます:

  • このメソッドを呼んでバナービューを初期化します(この例では、BANNER バナーサイズです):
    [IronSource loadBannerWithViewController:self size:ISBannerSize_BANNER];
    IronSource.loadBanner(with: self, size: ISBannerSize(description: "BANNER",width:320 ,height:50))

    サポートされている標準バナーサイズの詳細については、以下の表を参照してください:

    ISBannerSize Description Dimensions in points (WxH)
    ISBannerSize_BANNER Standard Banner 320 x 50
    ISBannerSize_LARGE Large Banner 320 x 90
    ISBannerSize_RECTANGLE Medium Rectangular (MREC) 300 x 250
    ISBannerSize_SMART
    Smart Banner
    ( iPhone と iPad に合わせてサイズとオリエンテーションを自動調整してレンダリング)
    If (iPhone ≤ 720) 320 x 50
    If (iPad > 720) 728 x 90
  • 別の方法は、このシグネチャ(ポイント単位の WxH )を使用して、カスタムサイズでバナーを配信することです:
    [IronSource loadBannerWithViewController:self size:[[ISBannerSize alloc] initWithWidth:320 andHeight:50];
    IronSource.loadBanner(with: self, size: ISBannerSize(width: 320, andHeight: 50))

ステップ 3. セーフエリアレイアウトの実装

セーフエリアとは、iOS11 の一部として導入されたレイアウトガイドを指し、iOS アプリケーションで許可されるビューの位置を定義します。これにより、アプリケーションがナビゲーションやタブバーなどの祖先ビューをカバーしないようになります。

セーフエリアの実装:

以下は、bannerDidLoad メソッドでバナーを初期化してロードする例です:

- (void)bannerDidLoad:(ISBannerView *)bannerView {
   NSLog(@"%s",__PRETTY_FUNCTION__);
   dispatch_async(dispatch_get_main_queue(), ^{
       self.bannerView = bannerView;
       if (@available(iOS 11.0, *)) {
           [self.bannerView setCenter:CGPointMake(self.view.center.x,self.view.frame.size.height - (self.bannerView.frame.size.height/2.0) - self.view.safeAreaInsets.bottom)]; // safeAreaInsets is available from iOS 11.0
       } else {
           [self.bannerView setCenter:CGPointMake(self.view.center.x,self.view.frame.size.height - (self.bannerView.frame.size.height/2.0))];
       }
       [self.view addSubview:self.bannerView];
   });
}

ステップ 4. 追加のロード設定

Unity LevelPlay ダッシュボードでのバナーのプレースメント、ペーシング、キャッピングをサポートしています。アプリのユーザー体験を最適化するために、バナーのプレースメント、キャッピング、ペーシングを設定する方法については、こちらをご覧ください。

バナーのプレースメントを設定した場合は、次のメソッドを呼んで、特定のプレースメントのバナー広告を配信します:

[IronSource loadBannerWithViewController:self size:ISBannerSize_BANNER placement:placement];
IronSource.loadBanner(with: YOUR_VIEW_CONTROLLER, size: YOUR_BANNER_SIZE, placement: YOUR_PLACEMENT_NAME)
Note: SDK は一度に複数のバナーを表示しません

ステップ 5. バナー広告を破棄する

バナーを破棄するには、次のメソッドを呼びます:

[IronSource destroyBanner: bannerView];
IronSource.destroyBanner(YOUR_IRONSOURCE_BANNER)

破棄されたバナーはロードできなくなります。もう一度提供したい場合は、初期化し直す必要があります。

ステップ 6. バナープロバイダーを実装する

次に、アドネットワークアダプターを統合して、Unity LevelPlay を介してバナーを配信します。
サポートされているネットワークと、各ネットワークの bannerSize の動作は以下をご覧ください:

BANNER LARGE RECTANGLE SMART
ironSource Banner Large Medium Rectangle Banner / Leaderboard
AdMob Banner Large* Medium Rectangle Banner / Leaderboard
Amazon Banner
Banner Banner Leaderboard **
AppLovin Banner Banner Medium Rectangle Banner / Leaderboard
Chartboost Banner Banner Medium Rectangle Banner / Leaderboard
Meta Audience
Network
Banner Large Medium Rectangle Banner / Leaderboard
Digital Turbine Banner Banner Medium Rectangle Banner / Leaderboard
HyprMX Banner Medium Rectangle Banner / Leaderboard
InMobi Banner Banner Medium Rectangle Banner / Leaderboard
UnityAds Banner Banner Leaderboard
Vungle Banner Banner Medium Rectangle Banner / Leaderboard

バナーサイズリファレンス:

  • Banner:  320 X 50
  • Large Banner:  320×90   
  • Medium Rectangle (MREC): 300×250 
  • LeaderBoard: 728X90  

* AdMob は Large を 320X100 と定義しています
** Amazon は Leaderboard を 728X50 と定義しています

ステップ 7. アダプティブバナー

アダプティブバナー機能を使用すると、事前定義された広告の幅に基づいて最適なバナーの高さを受け取ることができます。

この機能を使用すると、アダプティブバナーをサポートするネットワーク(現在は AdMob と Goole Ad Manager のみ)は、定義したコンテナの幅に基づいて最適な高さの広告を返します。他のすべてのネットワークは、指定されたデフォルトの広告サイズに従ってバナーを配信します。

この実装( ironSource SDK 7.8.0 以降でサポート)では、コンテナはアダプティブバナーをサポートするかどうかに関係なく、すべてのネットワークのバナーの境界を定義します。これにより、バナーロードセッション中の各バナーリフレッシュで一貫した広告体験が保証されます。

  1. バナーのデフォルトサイズを設定
  2. アダプティブバナーのパラメータを定義
    • Width:表示するバナーの幅。固定サイズまたはデバイスの幅のいずれかを使用します。
    • Height:getMaximalAdaptiveHeightWithWidth API を使用して、上記手順で定義した幅に対する推奨のバナーの高さを取得します。
  3. ステップ #1 で定義したパラメータサイズを使用してコンテナを作成
  4. adaptive フラグを true に設定
  5. バナーをロード
ISBannerSize *bannerSize = ISBannerSize_BANNER; // the banner size you choose will be the default value for non supporting banner adaptive networks
bannerSize.adaptive = YES;
CGFloat width = 320; // set width to your desired size 
CGFloat adaptiveHeight = [ISBannerSize getMaximalAdaptiveHeightWithWidth:width];
ISContainerParams *containerParams = [[ISContainerParams alloc] initWithWidth:width height:adaptiveHeight];
[bannerSize setContainerParams:containerParams];
[IronSource loadBannerWithViewController:YOUR_VIEW_CONTROLLER size:bannerSize placement:YOUR_PLACEMENT_NAME];
let bannerSize = ISBannerSize.BANNER // The banner size you choose will be the default value for non-supporting banner adaptive networks
bannerSize.adaptive = true
let width: CGFloat = 320 // Set width to your desired size
let adaptiveHeight = ISBannerSize.getMaximalAdaptiveHeight(withWidth: width)
let containerParams = ISContainerParams(width: width, height: adaptiveHeight)
bannerSize.setContainerParams(containerParams)
IronSource.loadBanner(with: YOUR_VIEW_CONTROLLER, size: bannerSize, placement: YOUR_PLACEMENT_NAME)

getMaximalAdaptiveHeightWithWidth メソッドは、アダプティブバナーがサポートされているネットワークでは指定された幅に対する最大の高さを提供します。アダプティブバナーをサポートするネットワークがない場合、戻り値は -1 になります。

完了!
これで、アプリケーションでバナーを配信する設定が出来ました。Integration Helper を使用して実装を確認してください。


次のステップは?

実装ガイドに従って、追加の広告ユニットを実装します:

より多くのメディエーションアダプターを実装したいですか?こちらでサポートされているメディエーションネットワークを確認してください。