iOS APP之間數據共享與UUID

最近的一個項目,遇到了應用之間數據共享和設備唯一標識的問題。經過多方面的搜索、驗證,得到了一些結論?,F在總結如下:

一、應用之間共享數據

1、URL Scheme

在Info.plist中配置URL Types,通過自定義的協議,來傳遞數據。特性是APP之間通過協議傳遞數據,會有一個跳轉過程。示例支付寶、微信支付等。

2、UIActivityViewController

iOS 6.0以后,蘋果推出的分享視圖控制器。特性是彈出系統分享控制器,一般用于分享。

3、Shared Keychain

使用Keychain共享數據,需要開啟Keychain Sharing服務,并限于同一供應商(即同一個蘋果證書)下的應用之間共享數據。

4、App Groups

iOS 8.0以后,蘋果推出了App Groups,使用NSUserDefaults、NSFileManager、NSFileCoordination共享數據,限于同一Group下的應用。

5、UIPasteboard

剪貼板,是應用之間共享文本的一種方式。示例在一個APP中,復制一段文本,在另一個APP中粘貼使用。能跨應用分享數據了,但是限于數據類型、數據量大小,升級系統數據丟失。


二、設備唯一標識

1、UDID

唉,這個iOS 5.0以后被蘋果禁用了。

2、UUID

UDID被禁用以后,蘋果推出的替代品。但是這個值,同一應用、不同時間調用時,生成的值不一樣;不同應用,生成的值也不一樣。唯一的優點,每次生成的都是唯一值。

3、MAC

唉,這個iOS 7.0以后也被封殺了。

4、IDFA

全名advertisingIdentifier。適用于iOS 6.0以后,在同一臺設備上,所有App都會取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設的,用戶可以在 設置|隱私|廣告追蹤 里重置此id的值,或限制此id的使用,故此id有可能會取不到值,而且提交蘋果審核時,必須明確指出使用了該值。

5、IDFV

全名identifierForVendor。使用于iOS 6.0以后,在同一設備上,同一供應商的APP取到相同的值,如果該供應商下的所有APP都被刪除,該值會被重置。

6、OPEN

網上有很多OPENUDID、OPENIDFA。實現方式為獲取手機的型號、系統創建時間、系統磁盤大小等一些系統屬性組合在一起,使用MD5模擬生成的類似UDID和IDFA的一串字符串。喲,這個貌似不錯,可以不同的應用直接能獲得同一值。但是,如果同一型號、同一批次出產的手機,那這個值不就一個樣了??!


好了,上面介紹了iOS 應用共享、設備唯一符?,F在有一需求:實現不同應用之間(跨供應商,即不同開發者賬號)共享登錄賬號密碼,并能對用戶是否更換設備進行跟蹤。這個該怎么實現啊?。。?/p>

輾轉反側,夜夜不能寐。想到以下條件:

1、使用UUID生成設備唯一標識(這個應該不會被蘋果禁用);

2、使用NSUserDefaults存儲UUID(我們不能每次都去獲取UUID啊,不然那還有啥意思);

3、使用UIPasteboard實現跨應用共享文本數據(這個也應該不會被蘋果禁用);

4、使用OPEN中提到的手機的型號、系統創建時間、系統磁盤大小等(這個也應該不會被蘋果禁用);

上面是條件,下面是方法

1、第一次使用,先從UIPasteboard讀取,有值,則讀??;沒值,則從NSUserDefault中讀取。NSUserDefault中有值則讀取,并保存到UIPasteboard中;沒值,則使用UUID生成唯一值。

2、使用UUID生成唯一值后,保存到NSUserDefault中,保存到UIPasteboard中。

3、第二次使用,如果是跨應用讀取,也就是說,第一次我是在A應用中生成的,現在我在B應用中讀取。這種情況,如果讀取有值,那么要把讀取的值,保存到B應用的NSUserDefault中。

上面3步貌似能解決大部分情況的問題了。可是還有個問題,比如我恢復出廠設置咋辦?。。。?/p>

我唯一能給出的答案,用我們強大的網絡!

把保存的UUID值,條件中的第4步中的手機型號、系統創建時間、系統磁盤大小等,都在網絡上保存一份。每次獲取時,從網絡獲取UUID,手機型號等、并與本地比較。因為一般用戶更換設備后,設備型號都會有所更新,你不要告訴我你升級設備后,用的還是同一型號同一款!

貌似解決了???!


就上面這些了,我只提供一些思路。目前在我的項目中,也是這樣使用的,目前還好,沒啥大問題。

歡迎大家提出一些問題,共同探討、進步!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容