- 問題:
頭條的點擊量中的設(shè)備id與我方獲取的設(shè)備id差異大,即是自然量多
- 分析:
在android10以前是用imei進(jìn)行歸因驶兜,imei的獲取接口有g(shù)etImei和getDeviceId,imei的獲取方式和結(jié)果可能與頭條有差異
- 解決方法:
通過提交工單了解頭條獲取imei的機(jī)制扼仲,并采用相同的機(jī)制獲取
- 結(jié)果:工單已經(jīng)提交我3個工作日了,仍未獲得頭條的答復(fù)(失望)
- 延伸:獲取imei的方式
- getImei:這個接口是api在26以后推薦使用的抄淑,能獲取imei
- getDeviceId:這個接口是api在26以前的屠凶,目前已為過時的方法,該方法在卡槽插入為移動和聯(lián)通卡時肆资,獲取的值為imei矗愧,在卡槽插入為電信卡時,獲取的值為meid (當(dāng)你撥出sim卡郑原,不插入時唉韭,獲取的值為上次插卡時獲取的值,如上次插入為電信卡犯犁,撥卡后再獲取仍為電信卡)
- getMeid:在api26以后属愤,獲取電信卡的meid有了專門的方法
綜上,個人得出以下獲取imei的方法(最好在得到imei碼后酸役,將其緩存春塌,以后要使用直接從緩存中讀取):
public static String getIMEI(Context context) {
String imei = "";
try {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= 29) {
imei = "";
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
imei = telephonyManager.getImei();
} else {
imei = telephonyManager.getDeviceId();
}
} catch (Exception e) {
e.printStackTrace();
}
return imei;
}
- 雙卡的手機(jī)獲取情況又如何簇捍?
- getImei
- 主卡槽為移動聯(lián)通電信:獲取的值均為imei
- 主卡槽為空只壳,卡槽2為任意運營商卡:獲取的值為卡槽2的imei
- getDeviceId
- 主卡槽為移動聯(lián)通:獲取的值為imei
- 主卡槽為電信:獲取的值為meid
- 主卡槽為空,卡槽2為任意運營商卡:獲取的值為卡槽1的imei
- getImei(index):獲取指定卡槽的imei暑塑,index為卡槽位置
- getDeviceId(index):獲取指定卡槽的imei或meid吼句,index為卡槽位置
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者