初回インプレッションのレイテンシを短縮する

プラットフォームを選択: Android 新規 Android iOS Unity

ウォーターフォール メディエーション チェーンが長く、サードパーティ アダプタが複数あるアプリを初期化すると、ユーザーのセッションで最初に表示される重要なインプレッションの広告リクエストにおいて、レイテンシが増加する場合があります。このように初回インプレッションのレイテンシが増加すると、広告リクエストのレスポンスが間に合わず、広告が表示されなくなる場合があります。

このガイドでは、アプリ セッションの初回インプレッションのレイテンシを短縮するために、次の点について説明します。

始める前に

先に進む前に、Google Mobile Ads SDK を設定してください。

初期化タイムアウトを設定する

インプレッション獲得の機会を逃さないようにするには、初期化タイムアウトを設定します。この方法により、設定した時間制限をアプリが超えないようにすることができます。広告リクエストは、設定した制限時間の経過後、または初期化の完了後に実行できます。

次の例では、初期化タイムアウトを 5 秒に設定しています。

Swift

Task {
  // Create TaskGroup to manage a race between
  // SDK initialization and a 5 second timer.
  await withTaskGroup(of: Void.self) { group in

    // Create a task to initialize the MobileAds SDK.
    group.addTask {
      await withCheckedContinuation { continuation in
        MobileAds.shared.start { _ in
          // SDK initialization finished, resume the continuation.
          // This will not stop the SDK's internal initialization process.
          continuation.resume()
        }
      }
    }

    // Create a cancellable task which is a 5 second timer.
    group.addTask {
      do {
        // Sleep for 5 seconds. This delay *is* cancellable.
        try await Task.sleep(nanoseconds: 5 * 1_000_000_000)
      } catch {
        // cancelAll() will stop this task and throw CancellationError.
        // This happens if the SDK initialization completes first.
      }
    }

    // Wait for either task to complete.
    await group.next()

    // Cancel the timer task if the SDK initialized first.
    group.cancelAll()
  }

  // Load an ad once after task group finishes.
  await self.loadAd()

初回リクエストでウォーターフォールの広告ソースを除外する

ウォーターフォールの広告ソースによるレイテンシを増やさずに広告を配信するには、Key-Value セグメンテーションを実装して、最初の広告リクエストからウォーターフォールの広告ソースを除外します。手順は次のとおりです。

  1. メディエーション グループを作成し、入札広告ソースを追加します。
  2. 新しい入札専用のメディエーション グループに、キー latency と値 low の Key-Value セグメンテーションを追加します。
  3. 管理画面で、新しい入札専用のメディエーション グループの優先順位を、メインのメディエーション グループよりも高くなるように設定します。優先順位を調整するには、メディエーション グループの優先度を変更します。
  4. 最初の広告リクエストに、カスタム ターゲティングの Key-Value ペアを含めます。

    Swift

    let customTargeting: [String: String] = ["latency": "low"]
    let request = GADRequest()
    request.customTargeting = customTargeting
    

    Objective-C

    NSDictionary *customTargeting = @{@"latency" : @"low"};
    GADRequest *request = [GADRequest request];
    request.customTargeting = customTargeting;
    

  5. Key-Value セグメンテーションの設定をテストし、新しい入札専用のメディエーション グループを正しくターゲティングできていることを確認します。

時間的制約の少ないインプレッションのパフォーマンスを改善する

アプリの起動時にすぐ表示する必要がない広告など、時間的制約の少ないインプレッションのパフォーマンスを改善するには、入札専用のメディエーション グループをターゲットにしない広告リクエストを使用して、広告をプリロードします。