インタースティシャル - 広告ユニットAPIへの移行 - iOS
このガイドでは、現在の実装から LevelPlay インタースティシャル API(広告ユニット ID を使用)へ移行し、インタースティシャル広告をロード・表示する方法について説明します。
インタースティシャル広告オブジェクトの作成
インタースティシャル広告オブジェクトの作成は、onInitSuccess コールバックを受け取った後に行う必要があります。
オブジェクトはセッション中に複数回のロードや表示に再利用できます。一度作成したら同じ広告ユニットをロード・表示に使用してください。
より高度な実装が必要な場合は、複数のインタースティシャル広告オブジェクトを作成しても構いません。
self.interstitialAd = [[LPMInterstitialAd alloc] initWithAdUnitId:@"adUnitId"];
self.interstitialAd = LPMInterstitialAd(adUnitId: "adUnitId")
デリゲートの実装
広告配信の通知を受けるには、LPMInterstitialAdDelegate をコードで実装してください。LevelPlayInterstitialDelegate の代わりに使用します。
- インタースティシャル広告のロード前にデリゲートを設定することを推奨します。
- 各インタースティシャル広告それぞれにデリゲート実装が必要です。
- デリゲートメソッドはメインスレッドで実行されます。
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) {}
レガシー | 広告ユニット(New) | |
Delegates | LevelPlayInterstitialDelegate | LPMInterstitialAdDelegate |
Events | didLoadWithAdInfo | didLoadAdWithAdInfo |
didFailToLoadWithError | didFailToLoadAdWithAdUnitId | |
didOpenWithAdInfo | didDisplayAdWithAdInfo | |
didCloseWithAdInfo | didCloseAdWithAdInfo | |
didFailToShowWithError | didFailToDisplayAdWithAdInfo | |
didClickWithAdInfo | didClickAdWithAdInfo | |
didShowWithAdInfo | – (deprecated) | |
– | didChangeAdInfo |
LevelPlay Ad Info
実装や利用可能なフィールドの詳細はこちらをご覧ください。
インタースティシャル広告のロード
インタースティシャル広告をロードするには、loadInterstitial の代わりに loadAd を使用してください。
インタースティシャル広告の表示
didLoadWithAdInfo コールバックを受け取った後、LevelPlayInterstitialDelegate の代わりに LPMInterstitialAdDelegate API を使ってインタースティシャル広告を表示します。showInterstitialWithViewController の代わりに showAdWithViewController を使用します。
- ViewController を渡す必要があります。
- プレースメントを利用する場合は、下記の Placements セクションのように 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。無効またはキャップに達していない場合は 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 ダッシュボードでインタースティシャル広告のプレースメントのペーシングとキャッピングがサポートされています。
インタースティシャル広告にプレースメントが設定されている場合は、showAd メソッドで特定のプレースメントで広告を配信してください。
// 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"];
}
// 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.showAd(viewController: self, placementName: placementName)
}
マルチ広告ユニット対応インタースティシャル API
レガシー | 広告ユニット(New) | |
API | loadInterstitial | loadAd |
showInterstitialWithViewController | showAdWithViewController | |
hasInterstitial | isAdReady | |
isInterstitialCappedForPlacement | isPlacementCapped |
インタースティシャル広告のフル実装例
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 Mediation デモアプリ
デモアプリでインタースティシャルの広告ユニット API をアプリに実装する方法を確認できます。
完了!
これで新しいマルチ広告ユニット API を使って、アプリケーション内でインタースティシャル広告を配信できるようになりました。