Android_CN_OAID
Android_CN_OAID copied to clipboard
OAID 有时能获取到,有时获取不到?

数据反馈,同一个用户, 同一款设备。有时候上报oaid,有时候不上报。看这个上报应该是初始化完成了。
什么原因会导致这种情况啊?
机型是 VIVO V1809A, 用的版本是 4.0.1
我看oaid也只有DeviceID.register(this);赋值,在没有其他地方赋值了,其他地方都是读取。
我看oaid也只有
DeviceID.register(this);赋值,在没有其他地方赋值了,其他地方都是读取。
DeviceID.register(this);这种用法,建议在Application里预先获取。不然就每次都调用DeviceID.getOAID(this, new IGetter() {..});适时获取。由于DeviceID.getOAID(this, new IGetter() {..});是异步的,你的这种为空的情况可能是DeviceID.register(this);里调用getOAID的时候还在获取OAID的过程中还没等得到结果就已经开始上报数据了
我看oaid也只有
DeviceID.register(this);赋值,在没有其他地方赋值了,其他地方都是读取。
DeviceID.register(this);这种用法,建议在Application里预先获取。不然就每次都调用DeviceID.getOAID(this, new IGetter() {..});适时获取。由于DeviceID.getOAID(this, new IGetter() {..});是异步的,你的这种为空的情况可能是DeviceID.register(this);里调用getOAID的时候还在获取OAID的过程中还没等得到结果就已经开始上报数据了
目前DeviceID.register(this);是在Application的oncreate中预期的。
获取oaid具体的时间最长会有多长时间啊? 数据反馈这个埋点上报的时机至少是APP启动了一定时间的
我看oaid也只有
DeviceID.register(this);赋值,在没有其他地方赋值了,其他地方都是读取。
DeviceID.register(this);这种用法,建议在Application里预先获取。不然就每次都调用DeviceID.getOAID(this, new IGetter() {..});适时获取。由于DeviceID.getOAID(this, new IGetter() {..});是异步的,你的这种为空的情况可能是DeviceID.register(this);里调用getOAID的时候还在获取OAID的过程中还没等得到结果就已经开始上报数据了目前
DeviceID.register(this);是在Application的oncreate中预期的。 获取oaid具体的时间最长会有多长时间啊? 数据反馈这个埋点上报的时机至少是APP启动了一定时间的
OAID的获取时长有点无法预计,不同的厂商和品牌实现方式不一样。为了保证OIAD不为空,也许你可以参照DeviceID.register(this);里的写法,等到getOAID得到回调onOAIDGetComplete或者onOAIDGetError后再上报数据:
String uniqueID = getUniqueID(application);
if (!TextUtils.isEmpty(uniqueID)) {
instance.clientId = uniqueID;
OAIDLog.print("Client id is IMEI/MEID: " + instance.clientId);
return;
}
getOAID(application, this);
@Override
public void onOAIDGetComplete(String result) {
if (result == null) {
result = "";
}
clientId = result;
oaid = result;
OAIDLog.print("Client id is OAID/AAID: " + clientId);
}
@Override
public void onOAIDGetError(Exception error) {
String id = DeviceID.getWidevineID();
if (!TextUtils.isEmpty(id)) {
clientId = id;
OAIDLog.print("Client id is WidevineID: " + clientId);
return;
}
id = getAndroidID(application);
if (!TextUtils.isEmpty(id)) {
clientId = id;
OAIDLog.print("Client id is AndroidID: " + clientId);
return;
}
clientId = getGUID(application);
OAIDLog.print("Client id is GUID: " + clientId);
}
没注意onOAIDGetComplete(String result)里result还可能为空,除了上面说的可能是getOAID还没得到回调就开始上报数据了,不知道会不会是本身获取OAID就是空的?说不定还真是有时候onOAIDGetComplete拿到的OAID就是空的
我看oaid也只有
DeviceID.register(this);赋值,在没有其他地方赋值了,其他地方都是读取。
DeviceID.register(this);这种用法,建议在Application里预先获取。不然就每次都调用DeviceID.getOAID(this, new IGetter() {..});适时获取。由于DeviceID.getOAID(this, new IGetter() {..});是异步的,你的这种为空的情况可能是DeviceID.register(this);里调用getOAID的时候还在获取OAID的过程中还没等得到结果就已经开始上报数据了目前
DeviceID.register(this);是在Application的oncreate中预期的。 获取oaid具体的时间最长会有多长时间啊? 数据反馈这个埋点上报的时机至少是APP启动了一定时间的OAID的获取时长有点无法预计,不同的厂商和品牌实现方式不一样。为了保证OIAD不为空,也许你可以参照
DeviceID.register(this);里的写法,等到getOAID得到回调onOAIDGetComplete或者onOAIDGetError后再上报数据:String uniqueID = getUniqueID(application); if (!TextUtils.isEmpty(uniqueID)) { instance.clientId = uniqueID; OAIDLog.print("Client id is IMEI/MEID: " + instance.clientId); return; } getOAID(application, this); @Override public void onOAIDGetComplete(String result) { if (result == null) { result = ""; } clientId = result; oaid = result; OAIDLog.print("Client id is OAID/AAID: " + clientId); } @Override public void onOAIDGetError(Exception error) { String id = DeviceID.getWidevineID(); if (!TextUtils.isEmpty(id)) { clientId = id; OAIDLog.print("Client id is WidevineID: " + clientId); return; } id = getAndroidID(application); if (!TextUtils.isEmpty(id)) { clientId = id; OAIDLog.print("Client id is AndroidID: " + clientId); return; } clientId = getGUID(application); OAIDLog.print("Client id is GUID: " + clientId); }
嗯嗯 谢谢我试试~
没注意
onOAIDGetComplete(String result)里result还可能为空,除了上面说的可能是getOAID还没得到回调就开始上报数据了,不知道会不会是本身获取OAID就是空的?说不定还真是有时候onOAIDGetComplete拿到的OAID就是空的
嗯嗯 就是存在可能同一个设备,有时能获取到oaid,有时获取不到。 有这种概率是吧
没注意
onOAIDGetComplete(String result)里result还可能为空,除了上面说的可能是getOAID还没得到回调就开始上报数据了,不知道会不会是本身获取OAID就是空的?说不定还真是有时候onOAIDGetComplete拿到的OAID就是空的嗯嗯 就是存在可能同一个设备,有时能获取到oaid,有时获取不到。 有这种概率是吧
自4.2.6版本开始已暴露一个回调接口IRegisterCallback,埋点上报可以改到这个回调接口里。