Google 牛轧糖上的广告 ID 返回空值
Google advertising ID Returning Null on Nougat
我在我的应用程序中使用了广告 ID,代码运行良好,我在设备 运行 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();
}
事实证明代码工作正常,唯一的问题是在 Nougat 上需要一些时间来调用 onPostExecute
方法,而在其他设备 运行 较低的 android 版本上调用此方法迅速地。我只是在调用 getAdvertisingID
后添加了一些延迟来获取广告 ID,一切正常。
快乐编码
我在我的应用程序中使用了广告 ID,代码运行良好,我在设备 运行 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();
}
事实证明代码工作正常,唯一的问题是在 Nougat 上需要一些时间来调用 onPostExecute
方法,而在其他设备 运行 较低的 android 版本上调用此方法迅速地。我只是在调用 getAdvertisingID
后添加了一些延迟来获取广告 ID,一切正常。
快乐编码