UMP SDK を設定する

Google User Messaging Platform(UMP)SDK は、プライバシー設定の管理に役立つプライバシーとメッセージ ツールです。詳しくは、プライバシーとメッセージについてをご覧ください。

メッセージ タイプを作成する

AdMob アカウントの [プライバシーとメッセージ] タブで、利用可能なユーザー向けメッセージの種類のいずれかを使用してユーザー向けメッセージを作成します。UMP SDK は、プロジェクトに設定されている AdMob アプリケーション ID から作成されたプライバシー メッセージを表示しようとします。

requestConsentInfoUpdate() を使用して、アプリの起動ごとにユーザーの同意情報の更新をリクエストする必要があります。このリクエストでは、次のことが確認されます。

  • 同意が必要かどうか。たとえば、初めて同意が必要な場合や、以前の同意の決定が期限切れになった場合です。
  • プライバシー オプションのエントリ ポイントが必要かどうか。一部のプライバシー メッセージでは、ユーザーがいつでもプライバシー オプションを変更できるようにする必要があります。
/**
 * Requests consent information update on app launch.
 */
export function requestConsent(onComplete?: () => void) {
  requestConsentInfoUpdate({}, (error) => {
    if (error) {
      console.warn('Consent info update error:', error.message);
    } else {
      console.log('Consent info update complete.');
    }

    // Load and show consent form if required.
    loadAndPresentConsentForm(onComplete);
  });
}

プライバシー メッセージ フォームを読み込んで表示する

最新の同意ステータスを受け取ったら、loadAndShowConsentFormIfRequired() を呼び出して、ユーザーの同意を収集するために必要なフォームを読み込みます。読み込みが完了すると、フォームがすぐに表示されます。

/**
 * Loads and presents the privacy message form if required to collect user consent.
 */
export function loadAndPresentConsentForm(onComplete?: () => void) {
  loadAndShowConsentFormIfRequired((formError) => {
    if (formError) {
      console.warn('Consent form error:', formError.message);
    } else {
      console.log('Consent gathering complete.');
    }

    // Execute logic that depends on consent state (for example, initialize the SDK).
    onComplete?.();
  });
}

プライバシー オプション

一部のプライバシー メッセージ フォームは、パブリッシャーがレンダリングしたプライバシー オプションのエントリ ポイントから表示され、ユーザーはいつでもプライバシー オプションを管理できます。プライバシー オプションのエントリ ポイントでユーザーに表示されるメッセージについて詳しくは、利用可能なユーザー メッセージの種類をご覧ください。

プライバシー オプションのエントリ ポイントが必要かどうかを確認する

requestConsentInfoUpdate() を呼び出した後、getPrivacyOptionsRequirementStatus() を確認して、アプリにプライバシー オプションのエントリ ポイントが必要かどうかを判断します。エントリ ポイントが必要な場合は、プライバシー オプション フォームを表示する、表示可能で操作可能な UI 要素をアプリに追加します。プライバシー エントリ ポイントが不要な場合は、UI 要素を非表示にして操作できないように構成します。

/**
 * Helper to determine if the privacy options entry point is required.
 */
export function isPrivacyOptionsRequired(): boolean {
  return (
    getPrivacyOptionsRequirementStatus() ===
    PrivacyOptionsRequirementStatus.REQUIRED
  );
}

プライバシー オプションの要件ステータスの全一覧については、 PrivacyOptionsRequirementStatus をご覧ください。

プライバシー オプション フォームを表示する

ユーザーが要素を操作したら、プライバシー オプション フォームを表示します。

/**
 * Renders a privacy options button if required by user consent policy.
 */
export function PrivacyOptionsButton({
  onDismissed,
}: {
  onDismissed?: (error?: FormError) => void;
}) {
  const isRequired =
    getPrivacyOptionsRequirementStatus() ===
    PrivacyOptionsRequirementStatus.REQUIRED;

  if (!isRequired) {
    return null;
  }

  const handleShowPrivacyOptions = () => {
    showPrivacyOptionsForm((error) => {
      if (error) {
        console.error('Failed to show privacy options form:', error.message);
      } else {
        console.log('Privacy options form dismissed.');
      }

      // Execute custom logic after form is dismissed.
      onDismissed?.(error);
    });
  };

  return <Button title="Privacy Settings" onPress={handleShowPrivacyOptions} />;
}

ユーザーの同意を得て広告をリクエストする

広告をリクエストする前に、 canRequestAds() を使用して、ユーザーから同意を得ているかどうかを確認します。

/**
 * Checks whether user consent allows requesting ads and initializes the SDK.
 */
let isMobileAdsInitialized = false;

export function initializeMobileAdsSdkIfConsentGiven() {
  if (canRequestAds()) {
    if (!isMobileAdsInitialized) {
      isMobileAdsInitialized = true;
      initialize({}, (status) => {
        console.log('Google Mobile Ads SDK initialized:', status);
      });
    }
  }
}

同意の取得中に広告をリクエストできるかどうかを確認する場所は次のとおりです。

  • UMP SDK が現在のセッションで同意を収集した後。
  • requestConsentInfoUpdate() を呼び出した直後。UMP SDK が以前のアプリ セッションで同意を取得している可能性があります。

同意取得プロセス中にエラーが発生した場合は、広告をリクエストできるかどうかを確認します。UMP SDK は、以前のアプリ セッションの同意ステータスを使用します。

広告リクエストの重複作業を防止する

同意を収集した後、requestConsentInfoUpdate() を呼び出した後に canRequestAds() を確認する際は、両方のチェックで true が返される可能性がある重複した広告リクエストを防止するロジックを実装してください。たとえば、ブール変数を使用します。

テスト

開発中のアプリで統合をテストする場合は、次の手順に沿ってプログラムでテストデバイスを登録します。アプリをリリースする前に、テストデバイス ID を設定するコードを必ず削除してください。

  1. requestConsentInfoUpdate()までお電話ください。
  2. ログ出力で次の例のようなメッセージを確認します。ここには、デバイス ID とテストデバイスとしてデバイスを追加する方法が示されています。

    Android

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231")
    to set this as a debug device.
    

    iOS

    <UMP SDK>To enable debug mode for this device,
    set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. テストデバイス ID をクリップボードにコピーします。

  4. コードに変更を加え、consentDebugSettings.testDeviceIdentifiers を呼び出し、テストデバイス ID のリストに渡します。

    /**
     * Registers a test device for testing consent flows.
     */
    export function configureTestDevice() {
      requestConsentInfoUpdate(
        {
          consentDebugSettings: {
            debugGeography: DebugGeography.DISABLED,
            testDeviceIdentifiers: ["TEST_DEVICE_HASHED_ID"],
          },
        },
        (error) => {
          if (!error) {
            console.log('Test device registered.');
          }
        },
      );
    }

地域を強制的に適用する

UMP SDK では、DebugGeography を使用して、デバイスが欧州経済領域(EEA)、英国(UK)、スイスなどのさまざまな地域にあるかのようにアプリの動作をテストできます。デバッグ設定はテスト用デバイスでのみ機能します。

/**
 * Configures debug settings to force EEA geography on a test device.
 */
export function configureDebugGeography() {
  requestConsentInfoUpdate(
    {
      consentDebugSettings: {
        debugGeography: DebugGeography.EEA,
        testDeviceIdentifiers: ["TEST_DEVICE_HASHED_ID"],
      },
    },
    (error) => {
      if (!error) {
        console.log('Consent debug test configuration loaded.');
      }
    },
  );
}

UMP SDK でアプリをテストする際、ユーザーの初回インストール エクスペリエンスをシミュレーションできるように、SDK の状態をリセットすると便利な場合があります。SDK には、これを行う reset() メソッドが用意されています。

/**
 * Resets consent state for testing purposes.
 */
export function resetConsentState() {
  reset();
}