Android:使用 Admob 的 Consent SDK 获取用户的位置

Zip*_*ppy 3 android admob google-admob cookieconsent

我对 AdMob 的新“同意 SDK”有疑问;该集成指南说,到把下列的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.
            }
        });
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后拨打以下电话:

ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown()
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当应用程序第一次安装/启动,isRequestLocationInEeaOrUnknown()总是返回“假”(我在欧洲经济区的方式)。

如果我然后退出应用程序并重新启动它,它会返回“true” - 这是正确的。如果我然后进入我的设备设置并在我的应用程序上执行“清除数据”并重新启动它,它再次返回“false”。

显然,这令人担忧,因为我向 EEA/瑞士用户展示了我自己的自定义同意对话框,而不是 ROW。这需要在首次发布时发生。

有趣的是,我尝试将调用isRequestLocationInEeaOrUnknown()放在我的 AsyncTask 的doInBackground方法中(我在 onCreate 中关闭了这个ASync),然后它在第一次启动时确实返回了“true”,就像在 ASync 的“onPostExecute”中对它的调用一样方法。只是在 onCreate 中调用它不会(在异步启动之前或之后)。

我知道现在还为时尚早,但是有没有人偶然发现过类似的问题?

Paw*_*ski 5

您必须isRequestLocationInEeaOrUnknown()onConsentInfoUpdated 调用回调后调用。

该值由 异步检索requestConsentInfoUpdate(),因此它在第一次启动时不正确,但它随后被缓存,因此在第二次启动时您有正确的值。