AdRequest isTestDevice возвращает false в сборке релиза на Android 8 - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над приложением, которое использует admob для показа рекламы.Я добавил тестовые идентификаторы для 3 устройств (1 под управлением Android 6 и 2 под Android 8), и они отлично работают в режиме отладки, будучи правильно идентифицированы как тестовые устройства.

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);

Примечание: коды для этого поста изменены1004 *

Но в сборке релиза 2 телефона с android 8 возвращают false при вызове на adRequest.isTestDevice(this);.Телефон Android 6 работает отлично.

Как мне преодолеть эту ошибку в Android 8?

1 Ответ

0 голосов
/ 24 октября 2018

Я решил это довольно быстро с небольшой отладкой, но я ждал, чтобы увидеть, если кто-нибудь опубликует причину.

Оказывается, это преднамеренное изменение (как большинство ошибок в Android в наши дни).Код тестового устройства - это md5-хэш Settings.Secure.ANDROID_ID, который на android 8 варьируется в зависимости от пользователя и приложения.https://developer.android.com/about/versions/oreo/android-8.0-changes См. Раздел о конфиденциальности

Поскольку сборки Debug и Release являются отдельными приложениями, они получают отдельные android_id.

Это делает тестирование admob в сборках выпуска очень рискованным.

Надеюсь, однажды они обновят код AdRequest, чтобы компенсировать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...