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