iOS のインタースティシャル実装

Unity LevelPlay インタースティシャルはフルスクリーンの広告ユニットであり、通常はアプリのライフサイクル中の自然な移行ポイントで配信されます。

Before you start
  • ironSource SDK がアプリケーションに正しく実装されていることを確認してください。実装の概要はこちら
  • LevelPlay Initialization API を使用して SDK を初期化してください。
  • AdUnitID は LevelPlay ダッシュボードで確認できます。詳細はこちら
  • このドキュメントは SDK 8.4.0+ に対応するものです。レガシーインタースティシャル API (SDK 8.4.0 以前) のドキュメントはこちら

インタースティシャル広告オブジェクトを作成する

インタースティシャル広告ユニットを作成します。インタースティシャルオブジェクトの作成は、onInitSuccess を受信した後に行う必要があります。

self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"];
self.interstitialAd = LPMInterstitialAd(adUnitId: "adUnitId")

デリゲートを実装する

LPMInterstitialAdDelegate を実装して、広告配信に関する情報を取得します。

  • インタースティシャル広告のロード前にデリゲートを設定することをお勧めします。
  • 各インタースティシャル広告にデリゲート実装が必要であることに注意してください。
  • デリゲートメソッドはメインスレッドで実行されます。
self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"]; 
self.interstitialAd.delegate = self;

#pragma mark - LPMInterstitialAdDelegate Methods
- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {}
- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {}
- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}
- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {}
self.interstitialAd = LPMInterstitialAd(adUnitId: "adUnitId") 
self.interstitialAd.setDelegate(self)

// MARK: LPMInterstitialAdDelegate methods
func didLoadAd(with adInfo: LPMAdInfo) {}
func didFailToLoadAd(withAdUnitId adUnitId: String, error: Error) {}
func didChangeAdInfo(_ adInfo: LPMAdInfo) {}
func didDisplayAd(with adInfo: LPMAdInfo) {}
func didFailToDisplayAd(with adInfo: LPMAdInfo, error: Error) {}
func didClickAd(with adInfo: LPMAdInfo) {}
func didCloseAd(with adInfo: LPMAdInfo) {}

LevelPlay Ad Info

Ad Info インタースティシャルリスナーコールバックによって返される ISAdInfo クラスは、LPMAdInfo に置き換えられました。
LevelPlay Ad Info の実装と利用可能なフィールドの詳細については、こちらをご覧ください。

インタースティシャル広告をロードする

インタースティシャル広告をロードするには、loadAd メソッドを呼びます。

[self.interstitialAd loadAd];
self.interstitialAd.loadAd()

インタースティシャル広告を表示する

didLoadAd コールバックを受信したら、インタースティシャル広告を表示します。

  • ViewController の共有が必要です。
  • プレースメントを使用している場合は、showAd API の一部として追加します。
  • 広告がユーザーに正常に表示されたら、ロード手順を繰り返すことで別の広告を読み込むことができます。
- (void)showInterstitialAd {
    // check that ad is ready
    if ([self.interstitialAd isAdReady]) {
       // Show without placement
       [self.interstitialAd showAdWithViewController:self placementName:NULL];
    }
}
func showInterstitialAd() {
// check that ad is ready  
if self.interstitialAd.isAdReady() {
       // Show without placement
      self.interstitialAd.showAd(viewController: self, placementName: nil)
    }
}

広告のアベイラビリティを確認する

表示の失敗を回避し、広告が正しく表示されることを確認するには、showAd API を呼び出す前に次の API を使用することをお勧めします。

isAdReady – 広告が正常に読み込まれ、広告ユニットに対するキャップが設定されていない場合、または視聴回数が広告ユニットに対して設定されたキャップに達していない場合は true を返し、それ以外の場合は false を返します。

isPlacementCapped – 有効なプレースメントに対する視聴回数がキャップに達している場合は true を返します。プレースメント名が有効でない場合、キャップが設定されていない場合、または視聴回数がプレースメントに対して設定されたキャップに達していない場合、この API は false を返します。

// check that ad is ready and that the placement is not capped 
if ([self.interstitialAd isAdReady] && ![LPMInterstitialAd isPlacementCapped:placementName]) {
    [self.interstitialAd showAdWithViewController:self placementName:placementName];
}
// check that ad is ready and that the placement is not capped 
if self.interstitialAd.isAdReady(),
  !LPMInterstitialAd.isPlacementCapped(placementName) {
    self.interstitialAd.showAd(viewController: self, placementName: placementName)
}

プレースメント

LevelPlay ダッシュボードでインタースティシャルのプレースメント、ペーシング、キャッピングをサポートしています。

インタースティシャル広告のプレースメントを設定している場合は、メソッドを呼び出して、特定のプレースメントに対してインタースティシャル広告を配信します。

- (void)showInterstitialAdWithPlacement {
    // Check that ad is ready and that the placement is not capped
    if ([self.interstitialAd isAdReady] && ![LPMInterstitialAd isPlacementCapped:placementName]) {
        // Show ad with placement
        [self.interstitialAd showAdWithViewController:self placementName:@"PlacementName"];
    }
}
func showInterestitialAdWithPlacement() {
    // check that ad is ready and that the placement is not capped 
    if self.interstitialAd.isAdReady(),
      !LPMInterstitialAd.isPlacementCapped(placementName) {
        self.interstitialAd.showAd(viewController: self, placementName: placementName)
    }
}

インタースティシャル広告の実装例

NS_ASSUME_NONNULL_BEGIN
@interface InterstitialAdViewController () <LPMInterstitialAdDelegate>
@property(nonatomic, strong) LPMInterstitialAd *interstitialAd;
@end
@implementation InterstitialAdViewController
- (void)createInterstitialAd {
    self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"];
    self.interstitialAd.delegate = self;
}
- (void)loadInterstitialAd {
    // used to load or reload the ad
    [self.interstitialAd loadAd];
}
- (void)showInterstitialAd {
    if ([self.interstitialAd isAdReady]) {
        [self.interstitialAd showAdWithViewController:self placementName:NULL];
    }
}
- (void)showInterstitialAdWithPlacementName:(NSString *)placementName {
    // check that ad is ready and that the placement is not capped 
    if ([self.interstitialAd isAdReady] && ![LPMInterstitialAd isPlacementCapped:placementName]) {
        [self.interstitialAd showAdWithViewController:self placementName:placementName];
    }
}
#pragma mark - LPMInterstitialAdDelegate Methods
- (void)didLoadAdWithAdInfo:(LPMAdInfo *)adInfo {
}
- (void)didFailToLoadAdWithAdUnitId:(NSString *)adUnitId error:(NSError *)error {
}
- (void)didChangeAdInfo:(LPMAdInfo *)adInfo {
}
- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {
}
- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {
}
- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {
}
- (void)didCloseAdWithAdInfo:(LPMAdInfo *)adInfo {
}
@end
NS_ASSUME_NONNULL_END
class InterstitialAdViewController: UIViewController, LPMInterstitialAdDelegate {
    var interstitialAd: LPMInterstitialAd!
    
    func createInterstitialAd() {
        self.interstitialAd = LPMInterstitialAd(adUnitId: "adUnitId")
        self.interstitialAd.setDelegate(self)
    }
    
    func loadInterstitialAd() {
        // used to load or reload the ad
        self.interstitialAd.loadAd()
    }
    
    func showInterstitialAd() {
        if self.interstitialAd.isAdReady() {
            self.interstitialAd.showAd(viewController: self, placementName: nil)
        }
    }
    
    func showInterstitialAd(withPlacementName placementName: String) {
        // check that ad is ready and that the placement is not capped 
        if self.interstitialAd.isAdReady(), !LPMInterstitialAd.isPlacementCapped(placementName) {
            self.interstitialAd.showAd(viewController: self, placementName: placementName)
        }
    }
    
    // MARK: LPMInterstitialAdDelegate methods
    func didLoadAd(with adInfo: LPMAdInfo) {}
    func didFailToLoadAd(withAdUnitId adUnitId: String, error: Error) {}
    func didChangeAdInfo(_ adInfo: LPMAdInfo) {}
    func didDisplayAd(with adInfo: LPMAdInfo) {}
    func didFailToDisplayAd(with adInfo: LPMAdInfo, error: Error) {}
    func didClickAd(with adInfo: LPMAdInfo) {}
    func didCloseAd(with adInfo: LPMAdInfo) {}
}

LevelPlay メディエーションデモアプリ

実装デモアプリでは、インタースティシャル広告ユニット API をアプリに実装する方法を確認できます。

iOS デモアプリダウンロード

完了!
アプリでインタースティシャル広告を配信できるようになりました。


次のステップは?
実装ガイドに従って、追加のインタースティシャルアドネットワークを設定するか、追加の広告フォーマットを実装します。