在本页中,您将了解如何使用 MAX 条款和隐私政策流程来提示用户接受使用条款和隐私政策。
您可以选择是否使用 MAX SDK 中的 CMP 流程。 如果您集成了自己的 CMP 流程,请确保在初始化 MAX SDK 之前完成该流程。
配合 Google UMP 使用时,AppLovin MAX SDK 符合 TCF v2 的要求:MAX SDK 可以接收许可字符串和 AC 字符串,并按照 TCF v2 许可中的描述,将 TCF v2 许可字符串/状态转发至被聚合的平台。
如果您没有通过 AppLovin 的自动化流程或其他方式使用 Google UMP 作为 CMP,则必须确保您选择的 CMP 支持集成的所有聚合平台。
如果您不使用 CMP,则必须继续按照 GDPR 及其他地区的许可和其他适用标记中的描述设置 AppLovin SDK 的二进制许可标记。
要通过 MAX 对接 Google 广告需求,请务必在开始集成前查看 Google CMP 要求。
AppLovin MAX SDK 12.0.0 及以上版本可自动化集成 Google UMP。 因此集成 MAX SDK 之外,您无需手动集成 Google UMP。 这是一项完全可选的设置,AppLovin 会为您说明如何启用额外的 Google UMP 集成。 下面是此流程的可视化呈现:
在下列任一情况下,TCF 许可状态可能为 false:
您必须先创建 Google GDPR 信息并在 AdMob 控制面板中发布该信息,才能在 MAX 许可流程中显示 Google GDPR 表单。 请按照下列步骤操作:
请勿勾选 Close (do not consent) 选项。
#ffffff)。#6e6e6e)。在默认的 GDPR 信息中,Google 可能不会显示您的所有广告平台合作伙伴。 如果未能纳入这些平台,您的广告收入可能会受到负面影响。 请按照本节中的步骤操作,确保 GDPR 消息中显示所有广告合作伙伴。
要自定义在 GDPR 消息中显示的广告合作伙伴,请按照下列步骤操作:
对于 Mintegral,从广告合作伙伴列表中选择 Mobvista/Mintegral,而非 Mintegral。
首先,请将 Google User Messaging Platform SDK 依赖项添加到您模块的应用层级 Gradle 文件中。
该文件通常为 app/build.gradle:
dependencies {
implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
}
dependencies {
implementation("com.google.android.ump:user-messaging-platform:2.1.0")
}启用 MAX 条款和隐私政策流程的方法有两种:通过编程方式,或向应用程序资源中添加设置文件。 以下各节将详细解释这两种方法。
要以编程方式启用 MAX 条款和隐私政策流程,请设置 SDK settings 对象的多个属性。
请参考下方示例代码,在初始化 SDK 之前完成此操作:
package com.applovin.apps.test;
import android.net.Uri;
import com.applovin.sdk.AppLovinMediationProvider;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkSettings;
public class MyApplication
extends Application
{
@Override
public void onCreate()
{
super.onCreate();
val settings = AppLovinSdk.getInstance( this ).getSettings();
settings.getTermsAndPrivacyPolicyFlowSettings().setEnabled( true );
settings.getTermsAndPrivacyPolicyFlowSettings().setPrivacyPolicyUri( Uri.parse( "«https://your-company-name.com/privacy-policy»" ) );
// Terms of Service URL is optional
settings.getTermsAndPrivacyPolicyFlowSettings().setTermsOfServiceUri( Uri.parse( "«https://your-company-name.com/terms-of-service»" ) );
// Showing Terms & Privacy Policy flow in GDPR region is optional (disabled by default)
settings.getTermsAndPrivacyPolicyFlowSettings().setShowTermsAndPrivacyPolicyAlertInGdpr( true );
// Set the mediation provider value to "max" to ensure proper functionality
AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder( "«SDK-key»" )
.setMediationProvider( AppLovinMediationProvider.MAX )
.build();
// Initialize the SDK with the configuration
AppLovinSdk.getInstance( this ).initialize( initConfig, new AppLovinSdk.SdkInitializationListener()
{
@Override
public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig)
{
⋮
}
} );
}
}package com.applovin.apps.test
import android.net.Uri
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkSettings
class MyApplication : Application()
{
override fun onCreate()
{
super.onCreate()
val settings = AppLovinSdk.getInstance(this).settings
settings.termsAndPrivacyPolicyFlowSettings.isEnabled = true
settings.termsAndPrivacyPolicyFlowSettings.privacyPolicyUri = Uri.parse("«https://your-company-name.com/privacy-policy»")
// Terms of Service URL is optional
settings.termsAndPrivacyPolicyFlowSettings.termsOfServiceUri = Uri.parse("«https://your-company-name.com/terms-of-service»")
// Showing Terms & Privacy Policy flow in GDPR region is optional (disabled by default)
settings.termsAndPrivacyPolicyFlowSettings.showTermsAndPrivacyPolicyAlertInGdpr = true
// Set the mediation provider value to "max" to ensure proper functionality
val initConfig = AppLovinSdkInitializationConfiguration.builder("«SDK-key»")
.setMediationProvider(AppLovinMediationProvider.MAX)
).build()
// Initialize the SDK with the configuration
AppLovinSdk.getInstance(this).initialize(initConfig) { sdkConfig ->
⋮
}
}
}
您可以在 AppLovin 控制面板的 Account > General > Keys 部分找到 SDK Key。
通过 Android 资源启用 MAX 条款和隐私政策流程:
applovin_settings.json 的 JSON 文件。consent_flow_settings 键创建一个新的 JSON 对象。consent_flow_settings 对象中添加以下键值对:
consent_flow_enabled 键和 true 值。consent_flow_privacy_policy 键,值是您的隐私政策 URL。consent_flow_terms_of_service 键和服务条款 URL 值的键值对。consent_flow_show_terms_and_privacy_policy_alert_in_gdpr、值为 true`的配置项,以便在 Google UMP 流程之前显示 GDPR 地区的条款和隐私政策提醒。最终结果应如下所示:
{
"consent_flow_settings": {
"consent_flow_enabled": true,
"consent_flow_terms_of_service": "«https://your-company-name.com/terms-of-service»",
"consent_flow_privacy_policy": "«https://your-company-name.com/privacy-policy»",
"consent_flow_show_terms_and_privacy_policy_alert_in_gdpr": true
}
}初始化 SDK 时,SDK 会显示许可请求流程。 用户完成流程时,SDK 会调用您的初始化完成回传。
在初始化第三方 SDK (例如 MMP 或数据分析 SDK) 之前,您必须等待用户完成许可请求流程。 因此,请在初始化-完成回传中初始化此类 SDK。 如果您在用户完成许可流程之前初始化第三方 SDK,这些 SDK 将无法访问相关标识符。 之后的监测、报告和广告收入都会受到实质影响。
请不要在初始化回传中初始化通过 MAX 聚合的其他广告平台 SDK。 MAX 会自动进行这些平台 SDK 的初始化。
如果您要在 MMP 集成中设置用户 ID,请在设置 AppLovin 用户 ID 的位置进行设置。 以下代码片段以 Adjust 为例。 请参阅 Adjust 文档,了解如何初始化 Adjust以及如何设置用户 ID。
package com.applovin.apps.test;
import com.adjust.sdk.Adjust;
import com.adjust.sdk.AdjustConfig;
import com.adjust.sdk.LogLevel;
import com.applovin.sdk.AppLovinMediationProvider;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkConfiguration;
import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
import com.applovin.sdk.AppLovinSdkSettings;
import lombok.val;
public class MyApplication
extends Application
{
@Override
public void onCreate()
{
super.onCreate();
// Create the initialization configuration
AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder( "«SDK-key»" )
.setMediationProvider( AppLovinMediationProvider.MAX )
.build();
// Set the user ID
val settings = AppLovinSdk.getInstance( this ).getSettings();
settings.setUserIdentifier( "«user-ID»" );
// Initialize the SDK with the configuration
AppLovinSdk.getInstance( this ).initialize( initConfig, new AppLovinSdk.SdkInitializationListener()
{
@Override
public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig)
{
// Initialize the Adjust SDK inside the AppLovin SDK's initialization callback
AdjustConfig adjustConfig = new AdjustConfig( this, "«your-Adjust-app-token»", AdjustConfig.ENVIRONMENT_SANDBOX or AdjustConfig.ENVIRONMENT_PRODUCTION );
Adjust.onCreate( adjustConfig );
// Start loading ads
}
} );
}
}package com.applovin.apps.test
import com.adjust.sdk.Adjust
import com.adjust.sdk.AdjustConfig
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
class MyApplication : Application()
{
override fun onCreate()
{
super.onCreate()
// Create the initialization configuration
val initConfig = AppLovinSdkInitializationConfiguration.builder("«SDK-key»")
.setMediationProvider(AppLovinMediationProvider.MAX)
.build()
// Configure the SDK settings if needed before or after SDK initialization.
val settings = AppLovinSdk.getInstance(this).settings
settings.userIdentifier = "«user-ID»"
// Initialize the SDK with the configuration
AppLovinSdk.getInstance(this).initialize(initConfig) { sdkConfig ->
// Initialize other 3rd-party SDKs - do not initialize mediated advertising SDKs, MAX will automatically do that for you. Not following this step will result in noticeable integration issues
// Initialize the Adjust SDK inside the AppLovin SDK's initialization callback
val adjustConfig = AdjustConfig( this, "«your-Adjust-app-token»", AdjustConfig.ENVIRONMENT_SANDBOX or AdjustConfig.ENVIRONMENT_PRODUCTION )
Adjust.onCreate(adjustConfig )
// Start loading ads
}
}
}AppLovin 建议您允许 GDPR 地区的现有用户重新进入 GDPR 流程。
一般来说,用户可以在应用的设置部分通过管理现有隐私设置选项来重新进入流程。
您可以根据用户是否位于 GDPR 地区,有条件地显示该设置选项。
要确定用户是否位于 GDPR 地区,请调用 AppLovinSdkConfiguration.getConsentFlowUserGeography()。如果 getConsentFlowUserGeography() 返回 ConsentFlowUserGeography.GDPR,就说明用户位于 GDPR 地区。
当用户点击 Manage Exisiting Privacy Settings (或其他类似的现有隐私设置管理选项) 时,调用 AppLovinCmpService.showCmpForExistingUser()。
请注意:该操作会重置用户现有的许可信息。
package com.applovin.apps.test;
import android.app.Activity;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinCmpService;
public class MyActivity
extends Activity
{
private void showAppLovinConsentFlow()
{
AppLovinCmpService cmpService = AppLovinSdk.getInstance( this ).getCmpService();
cmpService.showCmpForExistingUser( this, new AppLovinCmpService.OnCompletedListener()
{
@Override
public void onCompleted(final AppLovinCmpError error)
{
if ( null == error )
{
// The CMP alert was shown successfully.
}
}
} );
}
}package com.applovin.apps.test
import android.app.Activity
import com.applovin.sdk.AppLovinSdk
public class MyActivity : Activity()
{
private fun showAppLovinConsentFlow()
{
val cmpService = AppLovinSdk.getInstance(this).cmpService
cmpService.showCmpForExistingUser(this) { error ->
if (null == error)
{
// The CMP alert was shown successfully.
}
}
}
}如果您想在 GDPR 地区之外测试 Google CMP,请使用下方所示的方法之一,将调试用户的地理位置设为 GDPR:
AppLovinSdkSettings settings = AppLovinSdk.getInstance( this ).getSettings();
⋮
settings.getTermsAndPrivacyPolicyFlowSettings().setDebugUserGeography( AppLovinSdkConfiguration.ConsentFlowUserGeography.GDPR );val settings = AppLovinSdk.getInstance(this).settings
⋮
settings.termsAndPrivacyPolicyFlowSettings.debugUserGeography = AppLovinSdkConfiguration.ConsentFlowUserGeography.GDPR要设置调试用户地理位置,请在 consent_flow_settings 对象下添加带有 gdpr 值的 consent_flow_debug_user_geography 键:
{
"consent_flow_settings": {
⋮
"consent_flow_debug_user_geography": "gdpr"
}
}然后,在初始化 MAX SDK 之前设置测试设备的哈希 ID。 当应用在设备上运行时,Google CMP SDK 会记录此测试设备的哈希 ID。 通过以下调用设置测试设备的哈希 ID:
settings.setExtraParameter("google_test_device_hashed_id", "«your-test-device-hashed-ID»");settings.setExtraParameter("google_test_device_hashed_id", "«your-test-device-hashed-ID»")在 MAX Mediation Debugger 的 Privacy 部分下,**CMP (Consent Management Platform)**行显示已集成的 Google 认证 CMP SDK 的名称。 如果集成了 Google UMP SDK,则会显示 “Google consent management solutions” 作为名称。

If you select the CMP (Consent Management Platform) row, you can inspect the IAB TCF parameters IABTCF_gdprApplies, IABTCF_TCString, and IABTCF_AddtlConsent. For the latter two, you can click the row to copy or share its value.

在 CMP CONFIGURATION 部分,可以验证 Google UMP 配置中集成或缺失的平台。 下方列表包含 MAX 可用的所有平台。 您可以忽略应用中未集成的平台。
On your CMP flow you must list the networks that you integrate in your application. To check if any of those networks are missing, and to fix this problem:
重复这些步骤,直到确认您已将全部平台包含在 CMP 流程中。


要查看所有平台的许可状态,请展开 Mediation Debugger 的 Network Consent Statuses 部分。 Mediation Debugger 会解析 TC 字符串并显示所有平台的许可状态。 此外还会显示从 Google UMP 生成的 AC 字符串中解析出的 AppLovin 许可状态。
