2011-11-11 43 views
8

考慮到它們具有相同的捆綁種子ID,兩個應用程序是否可以訪問其他每個應用程序中的文檔?我知道有可能與共享捆綁種子ID(see here)的應用程序共享鑰匙串中的項目。iOS應用程序共享文檔目錄

例如,假設您的應用程序具有免費版本和付費版本。在有人從免費版本升級到付費版本後,您是否可以將其數據遷移到付費版本?

回答

4

您不能在應用程序之間共享文檔目錄。但還有其他的溝通渠道是開放的。

鑰匙扣是一種可能性,正如你所提到的。

另一個可能是自定義的URL方案。也許有點像這樣:

  1. 該免費應用程序註冊了使用freeapp://方案打開URL的功能。同樣,專業版應用程序註冊了使用proapp://方案打開URL的功能。使用信息列表中的「URL類型」條目。
  2. Pro的應用程序檢查是否[UIApplication canOpenURL:@"freeapp://goPro"] == YES
  3. 如果真親應用程序調用[UIApplication openURL:@"freeapp://goPro"]
  4. 這將啓動必須從UIApplication實現handleOpenURL的免費應用程序。
  5. 免費的應用程序將必要的數據打包在一個URL中。如果你喜歡,你可以使用類似HTTP的參數。您也可以使用NSCoding構建字典並將其序列化爲長的十六進制字符串。
  6. 免費的應用程序將數據傳遞迴使用[UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
  7. 親應用親應用接收來自UIApplication它的覆蓋的實施handleOpenURL URL和執行必要的數據遷移。

顯然你想要使用比上面更多的唯一的URL方案。

不過,考慮到能夠使用URL將這種類型的數據注入到應用程序中的安全隱患。這可能有很多目的,但我敢肯定,如果Facebook應用程序提供了一種通過URL來破壞帳戶設置的方法,有些人會發現在任何地方發佈facebookapp://reset_my_account鏈接都很有趣。

獎勵建議: URL架構在縮小原生代碼和Web視圖之間的差距時也非常方便。我有一些嵌入式Web視圖的應用程序,顯示我控制的服務器上的頁面。通過設置JS的文檔位置,網頁可以與應用程序通話。該應用程序可以攔截Web查看委託中的請求,並使用stringByEvaluatingJavaScriptFromString與Web視圖進行對話。

相關問題