このページでは、MAXの利用規約とプライバシーポリシーのフロー(Terms & Privacy Policy Flow)を使用して、利用規約およびプライバシーポリシーへの同意を促す方法について説明します。
MAX SDKに含まれているCMPフローを使用することも、独自のフローを統合することもできます。 独自のCMPフローを統合する場合は、MAX SDKを初期化する前にそのフローが完了していることを確認してください。
iOS 17.4のバグにより、App Tracking Transparency (ATT) プロンプトが、ユーザーがATTを拒否したと誤って早期に判断してしまう場合があります。 これにより、ATTに同意する可能性のあるユーザーであっても、AppLovin SDKがLAT設定された広告ネットワークで広告ユニットを初期化してしまいます。 AppLovinのUnified Consent Flowを使用している場合は、この問題を軽減するために最新のiOS SDK (12.3.0以降) にアップデートしてください。
AppLovin MAX SDKは、Google UMPと併用することでTCF v2に準拠します。 MAX SDKは、TCF v2同意で説明されているように、同意文字列およびAC文字列を取り込み、TCF v2同意文字列/ステータスをメディエーション対象のネットワークに転送できます。
AppLovinの自動フローまたはその他の方法でGoogle UMPをCMPとして使用しない場合は、選択したCMPが統合するすべてのメディエーション対象ネットワークをサポートしていることを確認する必要があります。
CMPを使用しない場合は、GDPRおよびその他の地域における同意およびその他の適用可能なフラグで説明されているように、AppLovin SDKのバイナリ同意フラグを設定し続ける必要があります。
MAXを通じてGoogleデマンドにアクセスする場合は、統合プロセスを開始する前にGoogle CMPの要件を必ず確認してください。
AppLovin MAX SDKは、Google UMPの統合を自動化します。 Google UMPを手動で統合する必要はありません。 これはオプトイン方式であり、AppLovinはこのGoogle UMP統合を有効にする方法についての手順を提供します。 以下はフローの視覚的な表現です。
TCFの同意ステータスは、以下のいずれかの状況においてfalseになる場合があります。
MAX同意フローでGoogle GDPRフォームを表示するには、まずAdMobダッシュボードでGoogle GDPRメッセージを作成して公開する必要があります。 手順は以下の通りです。
**閉じる(同意しない)**オプションにはチェックを入れないでください。
#ffffff)に設定します。#6e6e6e)に設定します。デフォルトのGDPRメッセージでは、Googleがすべての広告ネットワークパートナーを表示しない場合があります。 これらのネットワークを含めないと、広告収益に悪影響を及ぼす可能性があります。 このセクションの手順に従って、すべての広告パートナーがGDPRメッセージに表示されるようにしてください。
GoogleでGDPR認定されている広告パートナーのリストについては、Google AdMobヘルプサイトの「GDPRの広告パートナーの管理」を参照してください。
まず、Google User Messaging Platform SDKの依存関係をアプリのターゲットに追加します。
プロジェクトのPodfileで以下のように行います。
target '«your-project-name»' do
pod 'Google-Mobile-Ads-SDK'
end
アプリのInfo.plistに、String型のNSUserTrackingUsageDescriptionという新しいキーを作成します。
この文字列は、アプリがユーザーまたはデバイスを追跡するデータを使用する許可を求める理由をユーザーに通知するためのものです。
AppLovinでは、その値を「This uses device info for more personalized ads and content.」に設定することをお勧めします。
MAX利用規約とプライバシーポリシーフローは、プログラムから有効にするか、アプリケーションリソースに設定ファイルを追加することで有効にできます。 以下のセクションで、これら両方の方法について説明します。
アプリを審査のためにApp Store Connectに提出する際、iOS 14.5以降のみを対象にApp Tracking Transparencyフレームワークの許可リクエストを有効にしたことを審査員に通知する必要があります。 これは審査に関するメモセクションで行ってください。 これを行わない場合、Appleによってビルドが却下される可能性があります。
MAX利用規約とプライバシーポリシーフローをプログラムから有効にするには、SDKを初期化する前にSDKのsettingsオブジェクトの特定のプロパティを設定します。
以下のコードサンプルは、その方法を示しています。
#import <AppLovinSDK/AppLovinSDK.h>
⋮
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
⋮
ALSdkSettings *settings = [ALSdk shared].settings;
settings.termsAndPrivacyPolicyFlowSettings.enabled = YES;
settings.termsAndPrivacyPolicyFlowSettings.privacyPolicyURL = [NSURL URLWithString: @"«https://your-company-name.com/privacy-policy»"];
// 利用規約のURLは任意です
settings.termsAndPrivacyPolicyFlowSettings.termsOfServiceURL = [NSURL URLWithString: @"«https://your-company-name.com/terms-of-service»"];
// GDPR地域で利用規約とプライバシーポリシーのフローを表示するかどうかは任意です(デフォルトは無効)
settings.termsAndPrivacyPolicyFlowSettings.showTermsAndPrivacyPolicyAlertInGDPR = YES;
// 適切な機能を提供するために、メディエーションプロバイダーの値を @"max" に設定してください
ALSdkInitializationConfiguration *initConfig = [ALSdkInitializationConfiguration configurationWithSdkKey: @"«SDK-key»" builderBlock:^(ALSdkInitializationConfigurationBuilder *builder) {
builder.mediationProvider = ALMediationProviderMAX;
}];
// 設定を使用してSDKを初期化します
[[ALSdk shared] initializeWithConfiguration: initConfig completionHandler:^(ALSdkConfiguration *sdkConfig) {
⋮
}];
}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
{
⋮
let settings = ALSdk.shared().settings
settings.termsAndPrivacyPolicyFlowSettings.isEnabled = true
settings.termsAndPrivacyPolicyFlowSettings.privacyPolicyURL = URL(string: "«https://your-company-name.com/privacy-policy»")
// 利用規約のURLは任意です
settings.termsAndPrivacyPolicyFlowSettings.termsOfServiceURL = URL(string: "«https://your-company-name.com/terms-of-service»")
// GDPR地域で利用規約とプライバシーポリシーのフローを表示するかどうかは任意です(デフォルトは無効)
settings.termsAndPrivacyPolicyFlowSettings.shouldShowTermsAndPrivacyPolicyAlertInGDPR = true
// 適切な機能を提供するために、メディエーションプロバイダーの値を "max" に設定してください
let initConfig = ALSdkInitializationConfiguration(sdkKey: "«SDK-key»") { builder in
builder.mediationProvider = ALMediationProviderMAX
⋮
}
// 設定を使用してSDKを初期化します
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
⋮
}
}
}
SDKキーは、AppLovinダッシュボードのAccount > General > Keysセクションで確認できます。
アプリのAppLovin-Settings.plistを使用してMAX利用規約とプライバシーポリシーフローを有効にするには、以下の手順を行います。
AppLovin-Settings.plistという名前の新しいプロパティリストファイルを追加します。AppLovin-Settings.plistに、Dictionary型のConsentFlowInfoという新しいキーを作成します。
ConsentFlowInfoの中に、以下のキーと値のペアを追加します。
ConsentFlowEnabled、値がYESのBoolean。ConsentFlowPrivacyPolicy、値がプライバシーポリシーのURLのString。ConsentFlowTermsOfService、値が利用規約のURLのString。ConsentFlowShowTermsAndPrivacyPolicyAlertInGDPR、値がYESのBoolean。これにより、Google UMPフローの前にGDPR地域で利用規約とプライバシーポリシーのアラートが表示されます。最終的な結果は以下のようになります。

SDKは、SDKの初期化時に同意フローを表示します。 ユーザーがフローを完了すると、SDKは初期化完了コールバックを呼び出します。
サードパーティSDK(MMPやアナリティクスSDKなど)を初期化する前に、ユーザーが同意フローを完了するまで待つ必要があります。 そのため、これらのSDKは初期化完了コールバック内で初期化してください。 ユーザーが同意フローを完了する前にサードパーティSDKを初期化すると、これらのSDKは関連する識別子にアクセスできなくなり、計測、レポート、および広告収益に重大な影響を及ぼします。
初期化コールバック内でMAXのメディエーション対象ネットワークSDKを初期化しないでください。 MAXは、この初期化を自動的に行います。
MMPの統合でユーザーIDを設定する場合は、AppLovinのユーザーIDを設定する場所と同じ場所で設定してください。 以下のコードスニペットでは、Adjustを例として使用しています。 Adjustの初期化方法およびユーザーIDの設定方法については、Adjustのドキュメント(Adjustの初期化方法およびユーザーIDの設定方法)を参照してください。
#import <AppLovinSDK/AppLovinSDK.h>
#import <Adjust/Adjust.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
⋮
// 初期化設定を作成します
ALSdkInitializationConfiguration *initConfig = [ALSdkInitializationConfiguration configurationWithSdkKey: @"«SDK-key»" builderBlock:^(ALSdkInitializationConfigurationBuilder *builder) {
builder.mediationProvider = ALMediationProviderMAX;
}];
// 必要に応じて、SDK初期化の前後にSDK設定を構成します。
ALSdkSettings *settings = [ALSdk shared].settings;
settings.userIdentifier = @"«user-ID»";
[Adjust addSessionCallbackParameter: @"«your-user-ID-key»" value: @"«user-ID»"];
// 設定を使用してSDKを初期化します
[[ALSdk shared] initializeWithConfiguration: initConfig completionHandler:^(ALSdkConfiguration *sdkConfig) {
// configuration.appTrackingTransparencyStatus を介して、アプリのトラッキング透明性の追跡権限を確認できます
// 他のサードパーティSDKを初期化します。メディエーション対象の広告SDKは初期化しないでください。MAXが自動的に行います。この手順に従わない場合、顕著な統合の問題が発生します
// AppLovin SDKの初期化コールバック内でAdjust SDKを初期化します
ADJConfig *adjustConfig = [ADJConfig configWithAppToken: @"«your-Adjust-app-token»"
environment: ADJEnvironmentSandbox or ADJEnvironmentProduction];
[Adjust appDidLaunch: adjustConfig];
// 広告のロードを開始します
}];
}
import AppLovinSDK
import Adjust
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
{
⋮
// 初期化設定を作成します
let initConfig = ALSdkInitializationConfiguration(sdkKey: "«SDK-key»") { builder in
builder.mediationProvider = ALMediationProviderMAX
}
let settings = ALSdk.shared().settings
settings.userIdentifier = "«user-ID»"
Adjust.addSessionCallbackParameter("«your-user-ID-key»", value: "«user-ID»")
// 設定を使用してSDKを初期化します
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
// アプリのトラッキング透明性の追跡権限は、`configuration.appTrackingTransparencyStatus` を介して確認できます
// 他のサードパーティSDKを初期化します。メディエーション対象の広告SDKは初期化しないでください。MAXが自動的に行います。この手順に従わない場合、顕著な統合の問題が発生します
// AppLovin SDKの初期化コールバック内でAdjust SDKを初期化します
let adjustConfig = ADJConfig(appToken: "«your-Adjust-app-token»",
environment: ADJEnvironmentSandbox or ADJEnvironmentProduction)
Adjust.appDidLaunch(adjustConfig)
// 広告のロードを開始します
}
}
}
以下の表は、英語(ベース)の説明と、必要に応じて使用できるさまざまなローカライズ版を示しています。 アプリをローカライズする方法については、Documentation > Xcode > Localizationの手順を参照してください。
| ロケール | 文字列 |
|---|---|
| 英語 (ベース) | This uses device info for more personalized ads and content |
| 簡体字中国語 (ZhHans) | 我们使用设备信息来提供个性化的广告和内容。 |
| 繁体字中国語 (ZhHant) | 我們使用設備信息來提供個性化的廣告和內容。 |
| フランス語 (fr) | Cela permet d’utiliser les informations du téléphone pour afficher des contenus publicitaires plus pertinents. |
| ドイツ語 (de) | Dies benutzt Gerätinformationen für relevantere Werbeinhalte |
| 日本語 (ja) | これはユーザーデータをもとに、より関連性の高い広告コンテンツをお客様に提供します |
| 韓国語 (ko) | 보다 개인화된 광고 및 콘텐츠를 위해 기기 정보를 사용합니다. |
| スペイン語 (es) | Esto utiliza la información del dispositivo para anuncios y contenido más personalizados |
AppLovinでは、GDPR地域の既存のユーザーがGDPRフローに再進入できるようにすることをお勧めします。
通常、ユーザーはアプリの設定セクションにある既存のプライバシー設定の管理(Manage Existing Privacy Settings)などのオプションからこれを行います。
ユーザーがGDPR地域にいるかどうかは、SDK APIのALSdkConfiguration.consentFlowUserGeographyで判断できます。
consentFlowUserGeographyがALConsentFlowUserGeographyGDPRの場合、ユーザーはGDPR地域にいます。
その場合、その設定オプションを条件付きでユーザーに表示できます。
ユーザーが既存のプライバシー設定の管理(またはそれに相当するもの)をクリックしたときに、-[ALCMPService showCMPForExistingUserWithCompletion]を呼び出します。
これにより、ユーザーの既存の同意情報がリセットされます。
#import "MyViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>
@interface MyViewController ()
@end
@implementation MyViewController
- (void)loadAndShowCMPFlow
{
ALCMPService *cmpService = [ALSdk shared].cmpService;
[cmpService showCMPForExistingUserWithCompletion:^(ALCMPError * _Nullable error) {
if ( !error )
{
// CMPアラートが正常に表示されました。
}
}];
}
@end
import AppLovinSDK
class MyViewController: UIViewController
{
func loadAndShowCmpFlow()
{
let cmpService = ALSdk.shared().cmpService
cmpService.showCMPForExistingUser { error in
if (nil == error)
{
// CMPアラートが正常に表示されました。
}
}
}
}
GDPR地域外でGoogle CMPをテストする場合は、以下に示すいずれかの手法を使用してデバッグ用のユーザー地域を設定します。
このフローは新規ユーザーにのみ表示されます。 CMPプロンプトを完了した後にフローをテストする場合は、アプリを一度削除してから再インストールする必要があります。
デバッグ用のユーザー地域をGDPRに設定するには、以下のようなコードを使用します。
ALSdk.shared.termsAndPrivacyPolicyFlowSettings.debugUserGeography = ALConsentFlowUserGeographyGDPR;
ALSdk.shared().termsAndPrivacyPolicyFlowSettings.debugUserGeography = .GDPR
デバッグ用のユーザー地域を設定するには、ConsentFlowInfoオブジェクトの下に、文字列値がgdprであるConsentFlowDebugUserGeographyキーを追加します。

MAX Mediation DebuggerのPrivacyセクションの下にある**CMP (Consent Management Platform)**の行には、統合したGoogle認定CMP SDKの名前が表示されます。 Google UMP SDKを統合した場合、名前として「Google consent management solutions」が表示されます。

CMP (Consent Management Platform)の行を選択すると、IAB TCFパラメータであるIABTCF_gdprApplies、IABTCF_TCString、およびIABTCF_AddtlConsentを検査できます。 後者の2つについては、行をクリックしてその値をコピーまたは共有できます。

CMP CONFIGURATIONセクションでは、Google UMP設定に統合されているネットワーク、または不足しているネットワークを確認できます。 これは、MAXで利用可能なすべてのネットワークの網羅的なリストです。 アプリケーションに統合していないネットワークについては無視して構いません。
CMPフローでは、アプリケーションに統合するネットワークをリストする必要があります。 それらのネットワークのいずれかが不足しているかどうかを確認し、この問題を修正するには、以下の手順を行います。
すべてのネットワークがCMPフローに含まれていることを確認できるまで、これらの手順を繰り返します。
すべてのネットワークの同意ステータスを表示するには、Mediation DebuggerでNetwork Consent Statusesを展開します。 Mediation DebuggerはTC文字列を解析し、すべてのネットワークの同意ステータスを表示します。 また、Google UMPが生成するAC文字列から解析したAppLovinの同意ステータスも表示します。
