iOS平台無法直接通過檔案系統來分享資料。
1, 使用UIDocumentInteractionController
受到UIDocumentInteractionController的UI設計限制,其只能支援最多6個第三方應用,
IOS6上UIDocumentInteractionController被拋棄了,取而代之的是UIActivityViewController,它提供了更靈活的解決方案
2, 使用UIActivityViewController
上面提到了第一種方案在iOS6被拋棄了,取代方案就是UIActivityViewController,因此這和第一種方案非常類似。在UI方面通過分頁面板解決了最多6個第三方應用的問題,另外你可以通過建立自己的UIActivity子類來提供客制化的服務
3, 使用KeychainGroup Access
自iOS3.0始我們在同一家族的App間分享Keychain資料,這裡說的同一家族的App指的是具有相同Bundle
Seed ID的應用[蘋果制定的應用ID是由兩部分組成,<Bundle Seed ID>.<Bundle
Identifier>]。
4, 客制化的URLScheme
允許應用間通過URL進行資料轉送。URL Scheme是iOS平台目前應用間通訊的常用解決方案。
5, Web Service
通過第三方服務(例如dropbox)或者自己定製的伺服器來進行資料分享,[當然也可以在本地App內建立Web
Server,但是如果App切入後台之後,尤其是記憶體吃緊時,一切就變得不靠譜了]。
6, UIPasteBoard + URL Scheme
上面的方案或許足以滿足你的應用需求,但這些方案或多或少存在某些明顯短板,都為另一潛在的解決方案留有餘地。如果你想精確的控制App間資料通訊並且不受離線的影響,可以選擇UIPasteBoard+URL Scheme的方案。[遵循x-callback-url規範的應用iPGMail就使用了這種方案]
像上面提到過的URL Scheme方案一樣,我們可以通過URL來進行應用間通訊,而對於資料的傳輸,可以使用剪貼簿來進行,可以選擇成熟的資料結構序列化還原序列化方案來封裝通訊及資料轉送協議,可以定義回調方法