Google User Messaging Platform(UMP)SDK は、プライバシーに関するユーザー設定の管理に役立つプライバシーとメッセージのツールです。詳しくは、プライバシーとメッセージについてをご覧ください。
メッセージ タイプを作成する
AdMob アカウントの [プライバシーとメッセージ] タブで、利用可能なユーザー向けメッセージの種類のいずれかを使用してユーザー向けメッセージを作成します。UMP SDK は、プロジェクトで設定された AdMob アプリケーション ID から作成されたプライバシー メッセージを表示しようとします。
詳しくは、プライバシーとメッセージについてをご覧ください。
同意を得る
同意を得るには、次の手順を行います。
- 最新のユーザーの同意情報をリクエストします。
- 必要に応じて同意フォームを読み込んで提示します。
同意情報のリクエスト
アプリの起動ごとに requestConsentInfoUpdate()
を使用して、ユーザーの同意情報の更新をリクエストする必要があります。このリクエストは、以下を確認します。
- 同意が必要かどうか。たとえば、初めて同意が必要な場合や、前回の同意の決定が期限切れになった場合などです。
- プライバシー オプションのエントリ ポイントが必要かどうか。一部のプライバシー メッセージでは、ユーザーがプライバシー オプションをいつでも変更できるようにアプリが必要です。
必要に応じてプライバシー メッセージ フォームを読み込んで表示する
最新の同意ステータスを取得したら、loadAndShowConsentFormIfRequired()
を呼び出して、ユーザーの同意の取得に必要なフォームを読み込みます。読み込み後、フォームがすぐに表示されます。
次のコードは、ユーザーの最新の同意情報をリクエストする方法を示しています。必要に応じて、コードが読み込まれ、プライバシー メッセージ フォームが表示されます。
@override
void initState() {
super.initState();
// Create a ConsentRequestParameters object.
final params = ConsentRequestParameters();
// Request an update to consent information on every app launch.
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
});
},
(FormError error) {
// Handle the error.
},
);
}
プライバシー オプション
一部のプライバシー メッセージのフォームは、パブリッシャーがレンダリングするプライバシー オプションのエントリ ポイントから表示され、ユーザーがいつでもプライバシー オプションを管理できるようにします。プライバシー オプションのエントリ ポイントでユーザーに表示されるメッセージの詳細については、利用可能なユーザー メッセージの種類をご覧ください。
プライバシー オプションのエントリ ポイントが必要かどうかを確認する
requestConsentInfoUpdate()
を呼び出した後、getPrivacyOptionsRequirementStatus()
をチェックして、アプリにプライバシー オプションのエントリ ポイントが必要かどうかを判断します。
/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
return await ConsentInformation.instance
.getPrivacyOptionsRequirementStatus() ==
PrivacyOptionsRequirementStatus.required;
}
アプリに表示要素を追加する
プライバシー エントリ ポイントが必要な場合は、プライバシー オプション フォームを表示する、表示可能で操作可能な UI 要素をアプリに追加します。プライバシー エントリ ポイントが不要な場合は、UI 要素を非表示にして操作できないように構成します。
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
// Redraw the app bar actions if a privacy options entry point is required.
if (await isPrivacyOptionsRequired()) {
setState(() {
_isPrivacyOptionsRequired = true;
});
}
});
},
// ...
プライバシー オプション フォームを提示する
ユーザーが要素を操作したときに、プライバシー オプション フォームを表示します。
ConsentForm.showPrivacyOptionsForm((formError) {
if (formError != null) {
debugPrint("${formError.errorCode}: ${formError.message}");
}
});
広告をリクエスト
アプリで広告をリクエストする前に、canRequestAds()
を使用してユーザーから同意を得ているかどうかを確認してください。同意を得る際に確認する必要がある項目は 2 つあります。
- 現在のセッションで同意が得られた場合。
requestConsentInfoUpdate()
を呼び出した直後。前回のセッションで同意を得ている可能性があります。レイテンシに関するベスト プラクティスとして、コールバックの完了を待たずに、アプリの起動後できるだけ早く広告の読み込みを開始できるようにすることをおすすめします。
同意取得プロセス中にエラーが発生した場合でも、広告をリクエストできるかどうかを確認する必要があります。UMP SDK では、前のセッションの同意ステータスが使用されます。
次のコードは、同意取得プロセス中に広告をリクエストできるかどうかを確認します。
ConsentInformation.instance.requestConsentInfoUpdate(
params,
() async {
ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
if (loadAndShowError != null) {
// Consent gathering failed.
}
// Consent has been gathered.
if (await ConsentInformation.instance.canRequestAds()) {
_initializeGoogleMobileAdsSDK()
}
// ...
});
},
(FormError error) {},
);
// Check if you can initialize the Mobile Ads SDK in parallel while
// checking for new consent information. Consent obtained in the
// previous session can be used to request ads.
if (await ConsentInformation.instance.canRequestAds()) {
_initializeGoogleMobileAdsSDK()
}
次のコードは、ユーザーの同意の取得後に Google Mobile Ads SDK をセットアップします。
void _initializeGoogleMobileAdsSDK() async {
if (_isMobileAdsInitializeCalled) {
return;
}
_isMobileAdsInitializeCalled = true;
// Initialize the Mobile Ads SDK.
MobileAds.instance.initialize();
// Load an ad.
_loadAd();
}
テスト
開発中のアプリで統合をテストする場合は、次の手順に沿ってプログラムでテストデバイスを登録します。アプリをリリースする前に、テストデバイス ID を設定するコードを必ず削除してください。
requestConsentInfoUpdate()
までお電話ください。ログ出力で、次の例のようなメッセージを確認します。このメッセージには、デバイス 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]
テストデバイスの ID をクリップボードにコピーします。
ConsentDebugSettings.testIdentifiers
を呼び出してテストデバイス ID のリストを渡すようにコードを変更します。ConsentDebugSettings debugSettings = ConsentDebugSettings( testIdentifiers: ["TEST-DEVICE-HASHED-ID"], ); ConsentRequestParameters params = ConsentRequestParameters(consentDebugSettings: debugSettings); ConsentInformation.instance.requestConsentInfoUpdate(params, () async { // ... };
地域を強制的に適用する
UMP SDK では、debugGeography
を使用して、デバイスが EEA や英国などのさまざまな地域にあるかのようにアプリの動作をテストできます。デバッグ設定はテスト用デバイスでのみ機能します。
ConsentDebugSettings debugSettings = ConsentDebugSettings(
debugGeography: DebugGeography.debugGeographyEea,
testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);
ConsentRequestParameters params =
ConsentRequestParameters(consentDebugSettings: debugSettings);
ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
// ...
};
同意ステータスをリセットする
UMP SDK でアプリをテストする際、ユーザーの初回インストール エクスペリエンスをシミュレーションできるように、SDK の状態をリセットすると便利な場合があります。SDK には、これを行うための reset()
メソッドが用意されています。
ConsentInformation.instance.reset();
GitHub の例
このページで紹介した UMP SDK 統合の詳細な例については、Flutter の例をご覧ください。