我从已弃用的 GDPR 同意库切换到新的用户消息传递平台,并使用了文档中所述的代码。
我注意到,当用户点击“管理选项”然后“确认选择”时,广告将完全停止显示(广告加载失败,没有广告配置),而且我无论如何也找不到检查用户是否同意使用个人资料。
这是有问题的,因为我的应用程序纯粹依赖于广告,如果广告不显示我就会赔钱,所以我想强制用户同意使用他们的个人数据,否则应用程序应该无法使用。
我在Github上做了一个测试项目,这样每个人都可以测试这个行为。如果您没有使用模拟器,则需要将“TEST_DEVICE_ID”更改为您的模拟器。
我怎样才能实现这个目标?
我使用 UMP 来获取用户同意。然后我想使用 Google AdMob 展示广告。在 UMP文档中存在“转发同意 Google 移动广告 SDK”部分。据此我可以选择 AdMob 是否应该展示个性化广告或非个性化广告:
Bundle extras = new Bundle();
extras.putString("npa", "1");
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
Run Code Online (Sandbox Code Playgroud)
但是,如果用户接受(“同意”)或拒绝(“不同意”)同意书,我如何获取信息?我如何知道是否应该展示个性化广告或非个性化广告?或者我应该在我的应用程序中添加另一个按钮来询问用户想要看到什么样的广告?
我得到的唯一信息UserMessagingPlatform.getConsentInformation是用户是否已经选择了“同意”或“不同意”(如果状态==已获得),但不是他选择的选项。
我对 UMP SDK 的实现有很多困惑。除了谷歌之外,我没有找到太多信息或完整教程。我正在关注这个和这个,但无法理解以下问题:
MobileAds.initialize()征得同意后需要打电话吗?如果是这样,那么它应该在哪里调用?获得同意后可能会调用:
public void onConsentFormLoadSuccess(ConsentForm consentForm) {
if(consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.OBTAINED) {
}
}
Run Code Online (Sandbox Code Playgroud)
我如何检查用户是否来自欧洲经济区?我想根据用户位置请求同意或初始化移动广告。在Consent SDK 中,有一个 method isRequestLocationInEeaOrUnknown(),但此 SDK 已弃用。我在 UMP SDK 中没有找到类似的东西。一种方法可能是始终requestConsentInfoUpdate调用isConsentFormAvailableinside onConsentInfoUpdateSuccess。如果用户不是来自 EEA,则此方法返回 false。
我总是得到同意类型consentInformation.getConsentType()0 或未知。我尝试过不同的组合,但总是 0。
是否需要将同意信息转发给 AdMob SDK 或 SDK 会处理。
关于调解,我需要同意信息,但不知道如何获取。从文档:The UMP SDK writes consent status information to local storage
在 AdMob -> 欧盟用户同意中,我的中介合作伙伴之一未包含在Commonly used set of ad technology providers. 如果我使用Custom …
android admob mobile-ad-mediation gdprconsentform user-messaging-platform
我正在尝试获得使用用户消息平台的用户的同意。遵循本指南:
https://developers.google.com/admob/ump/android/quick-start
当我运行指南中的代码时,它正确显示了同意。如果我按“同意”,同意状态将更改为“ConsentInformation.ConsentStatus.OBTAINED可以”。
但是,当我再次终止并重新打开应用程序时,在调用 requestConsentInfoUpdate 后,它似乎将同意状态重置为ConsentInformation.ConsentStatus.REQUIRED并再次提示同意。
我怎样才能避免这种情况并且只提示一次征求同意?
我们一直在使用已弃用的Google 移动广告同意 SDK
它ConsentStatus让我们知道是否应该展示个性化广告或非个性化广告。
public enum ConsentStatus {
@SerializedName("unknown")
UNKNOWN,
@SerializedName("non_personalized")
NON_PERSONALIZED,
@SerializedName("personalized")
PERSONALIZED,
}
Run Code Online (Sandbox Code Playgroud)
Google 强烈建议我们迁移User Messaging Platform SDK
但是,我们注意到没有办法知道我们是否可以展示个性化广告或非个性化广告。新ConsentStatus外观如下。
public @interface ConsentStatus {
int UNKNOWN = 0;
int NOT_REQUIRED = 1;
int REQUIRED = 2;
int OBTAINED = 3;
}
Run Code Online (Sandbox Code Playgroud)
请问,如果我们应用User Messaging Platform SDK,我们应该使用什么样的逻辑来确定是否允许展示个性化广告或非个性化广告?
我尝试将 Google Consent 与用户消息传递平台结合使用,以在 Android 应用同意表中显示。我遵循此文档https://developers.google.com/admob/ump/android/quick-start。
我收到此错误:
onConsentInfoUpdateFailure: Publisher misconfiguration: Failed to read publisher's account configuration; please check your configured app ID. Received app ID: `ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX`.
Run Code Online (Sandbox Code Playgroud)
我的代码:
ConsentRequestParameters params;
if (testingGDPR) {
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
.setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
.addTestDeviceHashedId(getString(R.string.ADMOB_REAL_DEVICE_HASH_ID_FOR_TESTING))
.build();
params = new ConsentRequestParameters.Builder().setConsentDebugSettings(debugSettings).build();
} else {
params = new ConsentRequestParameters.Builder().build();
}
consentInformation = UserMessagingPlatform.getConsentInformation(this);
if (testingGDPR) {
consentInformation.reset();
}
consentInformation.requestConsentInfoUpdate(
this,
params,
new ConsentInformation.OnConsentInfoUpdateSuccessListener() {
@Override
public void onConsentInfoUpdateSuccess() {
if (consentInformation.isConsentFormAvailable() && consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.REQUIRED) { …Run Code Online (Sandbox Code Playgroud) 据我了解,GDPR 需要同意才能撤销。
我只找到了 ConsentInformation.reset() 方法,但该方法特别提到它仅用于调试目的。
撤销同意以便再次显示同意对话框的正确方法是什么?