AdRequest isTestDevice在Android 8的发行版中返回false

时间:2018-10-22 11:05:25

标签: android admob

我正在开发一个使用admob展示广告的应用。我添加了3个设备(1个运行android 6和2个运行android 8)的测试ID,它们在调试模式下工作正常,可以正确识别为测试设备。

AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
// My Phone 
adRequestBuilder.addTestDevice("AD9EA3690D287AA4A5A75279684045A1");
//Phone2 and 3
adRequestBuilder.addTestDevice("8438F5ABA7A67FAC92A26AAED589C8F1");
adRequestBuilder.addTestDevice("ED0430F25A6DA673BF0AA414AFDD7688");
// emulator
adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
AdRequest adRequest = adRequestBuilder.build();
// get whether it's a test device to enable developer functionality.
isTest = adRequest.isTestDevice(this);

注意:此帖子的代码已更改

但是在一个发布版本中,有2个android 8手机在对adRequest.isTestDevice(this);的调用中返回false。 android 6手机可完美运行。

如何克服android 8中的这个错误?

1 个答案:

答案 0 :(得分:0)

我通过一些调试很快就解决了问题,但是我等着看是否有人会发表原因。

结果证明这是一个有意的更改(就像这些天在Android中的大多数错误一样)。 测试设备代码是Settings.Secure.ANDROID_ID的md5哈希值,在Android 8上该代码因用户和应用而异。 https://developer.android.com/about/versions/oreo/android-8.0-changes参见隐私部分

由于Debug和Release版本是单独的应用,因此它们获得了单独的android_id。

这使得在发布时测试admob非常危险。

希望他们有一天会更新AdRequest代码以弥补这一点。