アプリ起動時広告
AppLovin SDK v11.5.0では、アプリ起動型広告フォーマットが導入されました。アプリ起動時広告はインタースティシャル広告と似ていますが、ユーザーがアプリをソフト起動またはコールドスタートしたときに表示されます。
- コールドスタート
- デバイス上にアプリの新規セッションを作成
- アプリがデバイスのメモリ上にない
- スプラッシュ/ロード画面が必須
- ソフトローンチ
- アプリをバックグラウンドからフォアグラウンドに戻す、またはアプリがフォアグラウンドモードのときにスマートフォンの電源を入れる
- アプリがメモリ内で一時停止されている
- スプラッシュ/ロード画面が必須
ベストプラクティス
- アプリ起動時広告が表示される前に、スプラッシュ/ロード画面を使用します。広告がアプリ内にどのように配置されるかに関わらず、これを行ってください。
- スプラッシュ/ロード画面内に、ユーザーに広告が表示されることを知らせるメッセージを追加してください。
- 例:「アプリが読み込まれるまで、スポンサーの広告が表示されます。」
- 広告が表示される前に、実際のアプリコンテンツをユーザーに表示させないようにしてください。 正しい順序は、スプラッシュ/ロード画面 ⇒ アプリ起動時広告 ⇒ アプリコンテンツです。
- スプラッシュ/ロード画面内に、ユーザーに広告が表示されることを知らせるメッセージを追加してください。
- アプリ起動時広告をロードする前に、AppLovin SDKが初期化されるようにしてください。
- アプリ起動時広告のロードが完了していない場合(例:コールドスタート時)、最初にアプリ起動時広告をロードしてください。
他の広告フォーマットは後でロードし、アプリ起動時広告と並行してロードすることは避けてください。
- 複数の広告フォーマットを同時にロードすると、端末のリソースや広告配信SDKにとって良くありません。
- ユーザーにアプリ起動時広告を過度に表示しないようにするため、AppLovinは以下の戦略を検討することをお勧めします。
- AppLovin外部で管理するフリークエンシーキャップを使用する。 これにより、広告が表示されるタイミングを完全にコントロールできるようになります。
- アプリ内のユーザー行動に基づいてクールダウン期間を実装する。 例:一定期間ソフトローンチ中に広告を表示せず、その後再度表示する、あるいは、ソフトローンチのたびにではなく、隔回で広告を表示する。
- 新規ユーザーがアプリを起動して数回使用するまで待ち、最初のアプリ起動時広告を表示する。
リテンション
アプリ起動時広告のフォーマットを実装するときは、常にリテンションを考慮してください。
アプリ起動時広告の場合、さまざまな実装戦略から選択できます。
AppLovinは、以下の手法のうち1つまたは複数を使用してテストすることを推奨します。 各アプリには、リテンションやアプリ滞在時間に影響を与えることなく収益を最大化するための独自の設定があります。 ユーザー行動とエンゲージメントは時間とともに変化する可能性があるため、AppLovinはアプリ起動時広告戦略を定期的に再テストすることをおすすめします。 アプリ起動時広告のテストに使用可能な実装方法は、以下のとおりです。
- 適切なユーザーに表示する。
この手法の例としては、以下のようなものがあります。
- 初回インストール後、アプリのコールドスタート時に表示するまで一定の日数が経過するのを待つ。
- 過去数日間にセッションを行ったユーザーにのみ表示する。
- アプリ内である条件に達したユーザーにのみ表示。 例えば、特定のレベルを完了している、アプリを特定の回数開いている、またはリワード提供にエンゲージしていないなど。
- ユーザーに過剰に広告を表示しないようにする。
この手法の例としては、以下のようなものがあります。
- すべての機会で広告を表示しない。 代わりに、2回に1回、3回に1回、または4回に1回のタイミングで広告を表示する。
- アプリが一定の時間(30秒、2分、15分など)バックグラウンドにある場合にのみ広告を表示する。
- コールドスタート広告を表示する場合、一定期間はソフトローンチのアプリ起動時広告またはインタースティシャルを表示しない。
- 頻度の上限を設定する。可能であれば、ユーザーコホートに基づいて上限をカスタマイズする。
- スプラッシュ画面を使用してユーザーに通知する。
- 上記のベストプラクティスのスプラッシュ画面に関するセクションを参照してください。
アプリ起動時広告を使用
アプリがフォアグラウンドに移動した時にアプリ起動時広告が準備できていることを確認するには、MAAppOpenAd
をプリロードする必要があります。
準備ができた広告を表示するメソッドを作成し、
applicationDidBecomeActive:
内でそのメソッドを呼び出します。
アプリはその後、アプリが起動した際に広告を表示するか、プリロードされていない場合は広告を読み込みます。
コールドスタートとロード画面
広告をリクエストしてから広告が表示されるまでに時間がかかる場合があります。これにより、ユーザーはコンテキストから外れた広告に驚く前に、アプリを短時間見ることができます。これは悪いユーザー体験であるため、避けるべきです。コールド スタートを処理する方法として推奨されるのは、読み込み画面を使用して最初のアプリ コンテンツを表示し、読み込み画面から広告を表示することです。読み込み画面の後にアプリのコンテンツが表示される場合は、広告を表示しないでください。
アプリ起動時広告の下にロード画面が表示され、広告が閉じられる前にロード画面が完了する場合があります。
その場合、didHide
メソッドでロード画面を解除できます。
例
これらのコードの例は、アプリがメモリ上で一時停止される「ソフトローンチ」でのみ、アプリ起動時広告が表示されることを想定しています。 スプラッシュ/ロード画面は含まれません。 スプラッシュ/ロード画面を処理する必要があります。詳細については、ベストプラクティスを参照してください。
@interface AppDelegate()<MAAdDelegate>@property (nonatomic, strong) MAAppOpenAd *appOpenAd;@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [[ALSdk shared] initializeSdkWithCompletionHandler:^(ALSdkConfiguration *configuration) { self.appOpenAd = [[MAAppOpenAd alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»"]; self.appOpenAd.delegate = self; [self.appOpenAd loadAd]; }]
return YES;}
- (void)applicationDidBecomeActive:(UIApplication *)application{ [self showAdIfReady];}
- (void)showAdIfReady{ if ( ![[ALSdk shared] isInitialized] ) { return; }
if ( [self.appOpenAd isReady] ) { [self.appOpenAd showAdForPlacement: @"«test-placement-ID»"]; } else { [self.appOpenAd loadAd]; }}
- (void)didLoadAd:(MAAd *)ad {}- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error {}- (void)didDisplayAd:(MAAd *)ad {}- (void)didClickAd:(MAAd *)ad {}
- (void)didHideAd:(MAAd *)ad{ [self.appOpenAd loadAd];}
- (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error{ [self.appOpenAd loadAd];}
@end
@UIApplicationMainclass AppDelegate: UIApplicationDelegate{ private lazy var appOpenAd = MAAppOpenAd(adUnitIdentifier: "«ad-unit-ID»")
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { ALSdk.shared().initializeSdk { (configuration: ALSdkConfiguration) in appOpenAd.delegate = self appOpenAd.load() }
return true }
func applicationDidBecomeActive(_ application: UIApplication) { showAdIfReady() }
private func showAdIfReady() { if ALSdk.shared().isInitialized { return }
if appOpenAd.isReady { appOpenAd.show(forPlacement: "«test-placement-ID»") } else { appOpenAd.load() } }}
extension AppDelegate : MAAdDelegate{ func didLoad(_ ad: MAAd) {} func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) {} func didDisplay(_ ad: MAAd) {} func didClick(_ ad: MAAd) {}
func didHide(_ ad: MAAd) { appOpenAd.load() }
func didFail(toDisplay ad: MAAd, withError error: MAError) { appOpenAd.load() }}
サポートされているアダプターのバージョン
アドネットワーク | アダプターの最小バージョン |
---|---|
Google 入札と Google AdMob | 10.9.0.1 |
Liftoffマネタイズ | 6.12.0.3 |
Mintegral | 7.2.3.0.1 |
Pangle | 4.6.2.2.1 |