iOS のバナー実装
モバイルバナー広告は通常、画面の上部または下部に表示され、ユーザーのセッション中に画面に表示されます。バナー広告は、実装が簡単で、広告主の認知度を高めるための優れたツールであるため、モバイルアプリで非常に人気のある広告ユニットです。
ironSource は、静的またはアニメーションのいずれかである4種類のシステム主導バナー広告を提供します。
ironSource SDK 7.8.0 以降、バナー実装にコンテナを使用することが可能になりました。詳細はこちら。
SDK 8.4.0 以降サポートされているマルチ広告ユニット API はこちら。
注意!バージョン 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{}
リスナーの完全な実装については、こちらで確認できます。
ステップ 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)
ステップ 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 |
APS | Banner | – | Medium Rectangle | 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 x 90
- Medium Rectangle (MREC): 300 x 250
- LeaderBoard: 728 x 90
* AdMob は Large を 320 x 100 と定義しています
** APS は Leaderboard を 728 x 50 と定義しています
ステップ 7. アダプティブバナー
アダプティブバナー機能を使用すると、事前定義された広告の幅に基づいて最適なバナーの高さを受け取ることができます。
この機能を使用すると、アダプティブバナーをサポートするネットワーク(現在は AdMob と Goole Ad Manager のみ)は、定義したコンテナの幅に基づいて最適な高さの広告を返します。他のすべてのネットワークは、指定されたデフォルトの広告サイズに従ってバナーを配信します。
この実装( ironSource SDK 7.8.0 以降でサポート)では、コンテナはアダプティブバナーをサポートするかどうかに関係なく、すべてのネットワークのバナーの境界を定義します。これにより、バナーロードセッション中の各バナーリフレッシュで一貫した広告体験が保証されます。
- バナーのデフォルトサイズを設定
- アダプティブバナーのパラメータを定義
- Width:表示するバナーの幅。固定サイズまたはデバイスの幅のいずれかを使用します。
- Height:getMaximalAdaptiveHeightWithWidth API を使用して、上記手順で定義した幅に対する推奨のバナーの高さを取得します。
- ステップ #1 で定義したパラメータサイズを使用してコンテナを作成
- adaptive フラグを true に設定
- バナーをロード
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 を使用して実装を確認してください。
次のステップは?
実装ガイドに従って、追加の広告ユニットを実装します:
より多くのメディエーションアダプターを実装したいですか?こちらでサポートされているメディエーションネットワークを確認してください。