适用于 Android 的用户消息传递平台错过了用户同意状态

Add*_*dev 6 android admob user-messaging-platform

我正在尝试获得使用用户消息平台的用户的同意。遵循本指南:

https://developers.google.com/admob/ump/android/quick-start

当我运行指南中的代码时,它正确显示了同意。如果我按“同意”,同意状态将更改为“ConsentInformation.ConsentStatus.OBTAINED可以”。

但是,当我再次终止并重新打开应用程序时,在调用 requestConsentInfoUpdate 后,它似乎将同意状态重置为ConsentInformation.ConsentStatus.REQUIRED并再次提示同意。

我怎样才能避免这种情况并且只提示一次征求同意?

hid*_*s02 0

首先确保您在依赖项中使用最新版本的 UMP SDK,并且不要依赖嵌入的版本play-services-ads,该版本可能已过时。

dependencies {
   implementation("com.google.android.gms:play-services-ads:22.6.0")
   implementation("com.google.android.ump:user-messaging-platform:2.2.0")
}
Run Code Online (Sandbox Code Playgroud)

其次,就我而言,Android DataStore导致首选项重置。相同的首选项文件用于存储 UMP SDK 的同意,巧合的是它们具有相同的名称。看来 DataStore 在找到首选项文件时会尝试迁移所有首选项,然后将其删除,这会导致 UMP SDK 丢失存储的同意信息。

dependencies {
   implementation("com.google.android.gms:play-services-ads:22.6.0")
   implementation("com.google.android.ump:user-messaging-platform:2.2.0")
}
Run Code Online (Sandbox Code Playgroud)

UMP SDKmy.package.name_preferences.xml默认使用文件(无法更改)来存储同意信息。我的旧首选项也存储在同一个文件中,当我切换到 DataStore 时,我必须从该文件进行迁移。

为了解决这个问题,我只是删除了迁移,因为它对我来说并不那么重要。