考慮到它們具有相同的捆綁種子ID,兩個應用程序是否可以訪問其他每個應用程序中的文檔?我知道有可能與共享捆綁種子ID(see here)的應用程序共享鑰匙串中的項目。iOS應用程序共享文檔目錄
例如,假設您的應用程序具有免費版本和付費版本。在有人從免費版本升級到付費版本後,您是否可以將其數據遷移到付費版本?
考慮到它們具有相同的捆綁種子ID,兩個應用程序是否可以訪問其他每個應用程序中的文檔?我知道有可能與共享捆綁種子ID(see here)的應用程序共享鑰匙串中的項目。iOS應用程序共享文檔目錄
例如,假設您的應用程序具有免費版本和付費版本。在有人從免費版本升級到付費版本後,您是否可以將其數據遷移到付費版本?
您不能在應用程序之間共享文檔目錄。但還有其他的溝通渠道是開放的。
鑰匙扣是一種可能性,正如你所提到的。
另一個可能是自定義的URL方案。也許有點像這樣:
freeapp://
方案打開URL的功能。同樣,專業版應用程序註冊了使用proapp://
方案打開URL的功能。使用信息列表中的「URL類型」條目。[UIApplication canOpenURL:@"freeapp://goPro"] == YES
[UIApplication openURL:@"freeapp://goPro"]
UIApplication
實現handleOpenURL
的免費應用程序。NSCoding
構建字典並將其序列化爲長的十六進制字符串。[UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
UIApplication
它的覆蓋的實施handleOpenURL
URL和執行必要的數據遷移。顯然你想要使用比上面更多的唯一的URL方案。
不過,考慮到能夠使用URL將這種類型的數據注入到應用程序中的安全隱患。這可能有很多目的,但我敢肯定,如果Facebook應用程序提供了一種通過URL來破壞帳戶設置的方法,有些人會發現在任何地方發佈facebookapp://reset_my_account
鏈接都很有趣。
獎勵建議: URL架構在縮小原生代碼和Web視圖之間的差距時也非常方便。我有一些嵌入式Web視圖的應用程序,顯示我控制的服務器上的頁面。通過設置JS的文檔位置,網頁可以與應用程序通話。該應用程序可以攔截Web查看委託中的請求,並使用stringByEvaluatingJavaScriptFromString
與Web視圖進行對話。