當前iOS已經(jīng)禁用代碼直接獲取設(shè)備的UDID和IMEI了,(即使獲取的有的也是假的),那怎么獲取真實的UDID和IEMI呢,那就只能通過描述文件來獲取了,所以我們可以在通過 安裝描述文件來獲取設(shè)備的當前信息,(蒲公英是這樣實現(xiàn)的)
如果你的app是企業(yè)應(yīng)用呢,不需要審核,那么直接用就好了,那要是你的是需要提交商店的呢,那么你就要小心一點用,或者提交審核的時候,不要讓這個出現(xiàn),我感覺應(yīng)該也是可以的,
描述文件操作系統(tǒng)并不會校驗,誰都能安裝,只是安裝的時候,需要用戶授權(quán)安裝就可以了
順便給大家一下 蘋果的官方文檔地址:
https://developer.apple.com/library/content/featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010206-CH1-SW604
通過描述文件,安裝一個后綴為.mobileConfig的描述文件,其實這個文件的本質(zhì)是一直xml文檔,
給大家一個udid描述文件的例子 :
https://github.com/yangfangkuo/CommonFile
里面有一個udid的文件 可以下載下來修改一下
其中,DeviceAttributes對應(yīng)的key是要的信息,還可以添加其他信息,操作系統(tǒng)(iOS)安裝完描述文件,獲取完這些信息,會將這些信息進行編碼,傳值給你描述文件中的地址,該地址收到這些信息之后,必須將 接口狀態(tài)碼(一般是200,),在這里返回狀態(tài)碼301,重定向(必須code碼是301(永久性轉(zhuǎn)移),302(暫時性轉(zhuǎn)移)會安裝失敗),
a :可以讓服務(wù)器寫這個接口,然后服務(wù)器重定向完之后,將參數(shù) 通過scheme打開客戶端的app將參數(shù)傳回來,
客戶端在appDelegate里面將 這個參數(shù)存到本地 ,并且存到鑰匙串,這樣即時app被卸載重裝,也無需再次安裝,
b: 也可以客戶端本地起服務(wù),寫一個接口,網(wǎng)上有HttpServer服務(wù)器的iOS代碼,可以不需要后臺幫忙,自己動手豐衣足食,但是我懶了
可以在上面就存儲,也可以將參數(shù)也轉(zhuǎn)發(fā)类嗤,去下面存儲(下面的是截圖的把數(shù)據(jù)當參數(shù)傳給app的捷沸,其實直接存在更方便更卒,上下2個圖片的邏輯不一樣的)
對于非企業(yè)分發(fā)的同學(xué)們,通過這個方法的話 ,蘋果審核有可能過不來,但是方法總比困難多,比如我們提交審核的時候,做點手腳,這個估計大家都干過,就不明說了
至于代碼獲取IMEI的好像是實現(xiàn)不了了,如果能實現(xiàn),請順便@一下我,我也學(xué)習一下,私有方法好像也不行,
至于UDID,網(wǎng)上大部分都是uuid再加點其他東西生成一個串,然后存到鑰匙串,如果刪除卸載,也是從鑰匙串取,但是無法避免 清空設(shè)備重裝的問題,會造成這個bug,但是也是勉強的方案,沒辦法,一般普通的用戶都可以通過這個實現(xiàn)了,
對了,具體的服務(wù)器回傳信息的時候, java或者php的服務(wù)器處理的代碼
我參考了這個文章,在此感謝原作者,如果不讓引用我就撤掉,
參考文章 : https://github.com/shaojiankui/iOS-UDID-Safari
感謝作者 ,感謝大家