我对 AdMob 的新 'Consent SDK' 有疑问; integration guide说要将以下内容放入 onCreate...
public class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ConsentInformation consentInformation = ConsentInformation.getInstance(context);
String[] publisherIds = {"pub-xxxxxxxxxxxxxxxx"};
consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
@Override
public void onConsentInfoUpdated(ConsentStatus consentStatus) {
// User's consent status successfully updated.
}
@Override
public void onFailedToUpdateConsentInfo(String errorDescription) {
// User's consent status failed to update.
}
});
...
}
...
}
然后调用:
ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown()
我遇到的问题是当应用程序第一次安装/启动时,isRequestLocationInEeaOrUnknown()总是返回“false”(我是 顺便说一句,在欧洲经济区。
如果我随后退出应用程序并重新启动它,它会返回“true”——这是正确的。如果我随后进入我的设备设置并在我的应用程序上执行“清除数据”并重新启动它,它会再次返回“false”。
显然这令人担忧,因为我向 EEA/瑞士用户展示了我自己的自定义同意对话框,而不是我是 ROW。这需要在首次启动时发生。
有趣的是,我尝试将对 isRequestLocationInEeaOrUnknown() 的调用放在我的 AsyncTask 的 doInBackground 方法中(我在 onCreate 中启动此 ASync),然后它执行 在首次启动时返回“true”,就像在 ASync 的“onPostExecute”方法中调用它一样。只是在 onCreate 中对它的调用不会(在异步开始之前或之后)。
我知道现在还处于早期阶段,但有没有人偶然发现类似的问题?
最佳答案
您必须在调用 onConsentInfoUpdated
回调后调用 isRequestLocationInEeaOrUnknown()
。
此值由 requestConsentInfoUpdate()
异步检索,因此在第一次启动时不正确,但随后会被缓存,因此在第二次启动时您有正确的值。
关于Android:使用 Admob 的 Consent SDK 获取用户的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50487171/