Рекламный идентификатор Google, возвращающий ноль на нугу
Я использую рекламный идентификатор в своем приложении, и код работал нормально, когда я тестировал его на устройстве под управлением Android Nougat 7.1.2. Можете ли вы указать, что я должен добавить, чтобы получить его в нуге тоже?
private static void getAdvertisingID() {
AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
AdvertisingIdClient.Info idInfo = null;
try {
idInfo = AdvertisingIdClient.getAdvertisingIdInfo(_context);
if (idInfo.isLimitAdTrackingEnabled()){ // check if user has opted out of tracking
Log.i("NetworkStateChangeReceiver","Not Found");
return "did not found GAID... sorry";
}
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
String advertId = null;
try{
advertId = idInfo.getId();
}catch (Exception e){
e.printStackTrace();
}
return advertId;
}
@Override
protected void onPostExecute(String advertId) {
Log.i("NetworkStateChangeReceiver","Found "+advertId);
UtilHelper.setDeviceIDFA(advertId);
}
};
task.execute();
}
1 ответ
Решение
Оказывается, код работает нормально, единственная проблема в том, что на Nougat требуется несколько звонков onPostExecute
метод, в то время как на других устройствах с более низкой версией Android этот метод вызывается быстро. Я просто добавил задержку, чтобы получить рекламный идентификатор после звонка getAdvertisingID
и все работало нормально. Удачного кодирования