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来进行应用间通讯,而对于数据的传输,可以使用剪贴板来进行,可以选择成熟的数据结构序列化反序列化方案来封装通讯及数据传输协议,可以定义回调方法