iOS でスポット広告を表示する
このページには、iOS でスポット広告を表示するための手順とコード サンプルがあります。
概要
スポット広告を表示するには、もう少し手間が必要です。 バナーの例で行ったように viewDidLoad
を実装するだけでなく、 adDidReceiveAd
デリゲート メソッドを実装する必要があります。 次のセクションでは、コード サンプルを使用して、その詳細について説明します。
プロセス
-
loadAd
を呼び出して、サーバーから広告コンテンツをフェッチし、ローカルにキャッシュします。 広告コンテンツは、広告サーバーからフェッチされてキャッシュされた時点で WebView にレンダリングされることに注意してください。 つまり、広告コンテンツの一部であるサード パーティのトラッキング ピクセルは、displayAdFromViewController
への呼び出しが後で行われた場合ではなく、loadAd
の呼び出し時に発生します。 - 広告コンテンツが実際に広告サーバーから受信されると、
adDidReceiveAd
コールバックの実装が発生します。 次の例では、displayAdFromViewController
をすぐに呼び出していますが、実装は、アプリがスポット広告を表示するのに便利になるまで待つことができます。displayAdFromViewController
への呼び出しは、Xandr によってインプレッションがカウントされるためには、loadAd
への呼び出しから約 4 分以内に行われる必要があることに注意してください。
注:
[閉じる] ボタンは、既定では 10 秒後に表示されます。 遅延は、 ANInterstitialAd.setCloseDelay
を使用して設定できます。
詳細については、以下のコード サンプルを参照してください。
スポット広告ユニットでサポートされているクリエイティブ メディアの種類
メディアの種類 | 説明 |
---|---|
バナー | ほとんどのスポット配置で需要を最大化することをお勧めします。 静的またはアニメーションバナーに適しています。 |
間隙 | 静的画像、MRAID、HTML レスポンシブフォーマットなど、全画面表示の広告に使用されます。 |
VAST ビデオ | バージョン 9.1.0 以降の動画広告をサポートしています。 ビデオの需要に対して配置が有効になっている場合に、ビデオ クリエイティブを提供するのに最適です。 |
コード サンプル
次のスポットコードサンプルは、プレースメント ID を使用して広告をリクエストする方法を示しています。
注:
バージョン RC2.8 以降では、引き続きサポートされていますが、配置 ID ではなく、メンバー ID とインベントリ コードの組み合わせを使用してスポットを初期化できます。 インベントリ コードとメンバー ID を使用した初期化を示すメソッドを次に示します。
// iOS: ObjC code that uses inventory code and member ID instead of placement ID (optional)
-(instancetype)initWithMemberId:(NSInteger)memberId inventoryCode:(NSString *)inventoryCode;
コード サンプル (Objective C)
// iOS: ObjC code to show an interstitial ad
#import "ViewController.h"
#import "ANInterstitialAd.h"
@interface ViewController () <ANInterstitialAdDelegate>
@property (nonatomic, strong)ANInterstitialAd *inter;
@end
@implementation ViewController : UIViewController
- (void)viewDidLoad {
self.inter = [[ANInterstitialAd alloc] initWithPlacementId:@"1326299"];
// set ourselves as the delegate so we can respond to the required adDidReceiveAd
// message of the `ANAdDelegate protocol' (see implementation below)
self.inter.delegate = self;
// Load an ad!
[self.inter loadAd];
}
- (void)adDidReceiveAd:(id<ANAdProtocol>)ad {
[self.inter displayAdFromViewController:self];
}
- (void)adFailedToDisplay:(ANInterstitialAd *)ad {
NSLog(@"Uh oh, the ad failed to display!");
}
@end
コード サンプル (Swift)
// iOS: Swift code to show an interstitial ad
// Import ANInterstitialAd.h in the bridging header.
class ViewController: UIViewController, ANInterstitialAdDelegate {
let inter = ANInterstitialAd.init(placementId: "1326299")
override func viewDidLoad() {
super.viewDidLoad()
// Set ourselves as the delegate so we can respond to the required adDidReceiveAd
// message of the ANAdDelegate protocol (see implementation below).
inter.delegate = self
// Load an ad!
inter.loadAd()
}
// ANInterstitialAdDelegate
extension InterstitialViewController: ANInterstitialAdDelegate {
// - (void)adDidReceiveAd:(nonnull id)ad;
func adDidReceiveAd(_ ad: Any) {
appNexusIntersitial?.display(from: self)
}
// - (void)ad:(nonnull id)loadInstance didReceiveNativeAd:(nonnull id)responseInstance;
func ad(_ ad: Any, requestFailedWithError error: Error) {
}
}
}
カスタムスポットサイズの使用
既定では、広告サイズを指定しない場合、SDK は、デバイスの画面のサイズ以下のサイズで広告をフェッチします。
- 1x1 (常に送信)
- 検出された画面のサイズ (常に送信)
- 300x250
- 320x480
- 900x500
- 1024x1024
デフォルト以外のサイズでスポット広告を表示する場合は、ANInterstitialAd
の allowedAdSizes
プロパティを設定します。 検出された画面のサイズは、引き続きメインサイズとして渡されることに注意してください。
allowedAdSizes
プロパティを使用して設定されたサイズは、配置にpromo_sizes
として渡され、既定値の 300x250 と 320x480 が置き換えられます。
スポットを自動閉じる
特定のタイムアウト期間後にスポット広告を自動クローズする場合は、上記のセクションで説明したように displayAdFromViewController
を呼び出さないでください。 代わりに、 displayAdFromViewController:(UIViewController *)controller autoDismissDelay:(NSTimeInterval)delay
を呼び出します。 次の例では、スポットが閉じられるまでの秒数を 10 秒に設定します。
// This will show an interstitial ad, wait for 10 seconds, then auto close it.
[self.interstitial displayAdFromViewController:self autoDismissDelay:10];