iOS5之后,原來獲取iPhone的DeviceId的接口:[UIDevice uniqueIdentifier] 被廢棄!
這個改動會影響非常多的人,尤其是數據分析者。由于iPhone取IMEI困難(屬于私有方法),所以大多數應用將DeviceId,也就是uniqueIdentifier作為IMEI來使用。如果這個接口被廢棄,那么,我們就需要尋求一個新的方式來標識唯一的設備。
官方推薦的方法是,每個應用內創建一個UUID來作為唯一標志,并將之存儲,但是這個解決方法明顯不能接受!原因是,你每次創建的UUID都是不一樣的,意味著,你卸載后重新安裝這個軟件,生成的UUID就不一樣了,無法達到我們將之作為數據分析的唯一標識符的要求。
現有的解決方案是,使用iPhone的Mac地址,因為Mac地址也是唯一的。unix有系統調用可以獲取Mac地址。但是有些事情需要注意:
1.iPhone可能有多個Mac地址,wifi的地址,以及SIM卡的地址。一般來講,我們取en0的地址,因為他是iPhone的wifi的地址,是肯定存在的。(例外情況依然有:市面上依然存在一部分聯通的閹割版無wifi的iPhone)
2.Mac地址涉及到隱私,不應該胡亂將用戶的Mac地址傳播!所以我們需要將Mac地址進行hash之后,才能作為DeviceId上傳。
網上已經有現成的解決方案:
https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
浙公網安備 33010602011771號