獲取手機的唯一標識符

1.獲取手機的唯一設備標識符IMEI

public static String getMobileIMEI(Context context) {
		String imei = null;
		try {
			TelephonyManager mTelephonyMgr = (TelephonyManager) context
					.getSystemService(Context.TELEPHONY_SERVICE);
			imei = mTelephonyMgr.getDeviceId();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return imei;
	}

2.獲取手機唯一的入網標識符IMSI:

public static String getMobileIMSI(Context context) {
		// 獲取手機的IMSI碼
		String imsi = null;
		try {
			TelephonyManager mTelephonyMgr = (TelephonyManager) context
					.getSystemService(Context.TELEPHONY_SERVICE);
			String sendNum = null;
			imsi = mTelephonyMgr.getSubscriberId();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	return imsi;
	}


3.獲取手機的入網手機號:

public static String getMobileNumber(Context context) {
		String number = null;
		try {
			TelephonyManager tm = (TelephonyManager) context
					.getSystemService(Context.TELEPHONY_SERVICE);
			number = tm.getLine1Number();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return number;
	}

【先說結論】
UDID是移動端相對最靠譜的設備標識碼,不論Android或iOS。

【名詞釋義】

  • Device ID:設備ID。
  • IMEI:International Mobile Equipment Identity,國際移動設備身份碼的縮寫。是由15位數字組成的“電子串號”,它與每臺手機一一對應,每個IMEI在世界上都是唯一的。
  • IDFA:Identifier For Advertising,iOS獨有的廣告標識符。
  • UDID:Unique Device Identifier,唯一設備標識碼。
  • UUID:Universally Unique Identifier,通用唯一識別碼。目前最廣泛應用的UUID,是微軟公司的全局唯一標識符GUID。其目的是讓分佈式系統中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。

【再說過程】
名詞釋義是不是看得一臉懵逼?莫慌,下圖介紹了各個設備標識碼的區別,以及目前的情況。

點擊圖片查看清晰大圖

Android設備標識碼

  1. device ID。
    又叫設備ID。可以用系統提供的TelephonyManager服務來獲取,具有唯一性。其中又包括IMEI和MEID/ESN。
  2. IMEI:GSM設備返回的,並且是寫在主板上的,重裝APP不會改變IMEI。Android 6.0以上系統需要用戶授予read_phone_state權限,如果用戶拒絕就無法獲得。
  3. mac地址:硬件標識符,包括WiFi mac地址和藍牙mac地址。Android 6.0之後被禁止,若獲取則會被判定爲有害應用。
  4. MEID/ESN:CDMA設備返回的,一般不使用。
  5. UDID:用來標示設備的唯一性。獲取UUID後,寫入.so文件生成UDID。即使APP重裝,值也不變,除非root手機(普通用戶做不到)
  6. UUID:APP重裝後會改變。

iOS設備標識碼

  1. device ID。
  2. IMEI:iOS 5 之後被禁止。寫在主板上,重裝APP不會改變。
  3. IDFA:於iOS 6 時面世,可以監控廣告效果,同時保證用戶設備不被APP追蹤的折中方案。可能發生變化,如系統重置、在設置裏還原廣告標識符。用戶可以在設置裏打開“限制廣告跟蹤”。
  4. mac地址:硬件標識符,包括WiFi mac地址和藍牙mac地址。iOS 7 之後被禁止(同時禁止的還有OpenUDID)。
  5. UDID:用來標示設備的唯一性 。iOS 6 之後被禁止獲取系統原生的UDID,但可以通過uuid,寫入到鑰匙串中,從而獲得自定義的UDID(非系統原生),即使用戶重裝APP,只要每次都取這個鑰匙串返回,就是不變的。
  6. UUID:APP重裝後會改變。

【總結】
若想用於數據統計,使用UDID是最靠譜的。

 


鏈接:https://www.jianshu.com/p/38f4d1a4763b
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章