如何在iPhone应用程序之间共享自定义数据?

26

如果我制作了两个 iPhone 应用程序,如何/应该在它们之间共享自定义数据(不是联系人等内容)?

谢谢!

5个回答

19

有两种不同的方式可以实现这一点。

1)你需要分享的数据是非持久性的。换句话说,你需要启动一个应用程序并提供一些数据让它进行处理。在这种情况下,你需要为每个应用程序注册一种特殊的URL scheme。

你可以通过Craig Hockenberry的[已删除]博客文章获取更多有关URL schemes的信息。

2)你需要分享的数据是持久性的。换句话说,你需要像数据文件这样的东西,使得两个应用程序都可以读取和写入。据我所知,除了将数据存储在远程服务器上之外,没有其他安全的方法可以实现此目的。如果你需要在没有数据连接的情况下访问数据,则需要找到一种方法,在各个应用程序和远程服务器之间同步数据。


19

除了已经提到的内容外,iPhone关于代码签名的文档似乎暗示使用相同身份签名的应用可以访问相同的Keychain条目。如果您需要存储相对较小量的数据(例如密码等),这可能是一种有用的技术。


是的,在Micheal Ledford的答案之后,我开始研究Keychain,虽然我还不确定如何正确签名,但这可能是在应用程序之间共享小数据(精确密码)的解决方案。 - Robert Gould
1
我还没有尝试过,但这看起来像是钥匙串逐步操作:http://shaune.com.au/ios-keychain-sharing-data-between-apps/ - leontx

5

应用程序可以在iCloud上共享容器目录。

来自苹果关于配置iCloud权限的文档

iCloud Containers字段标识了您的应用程序可以访问用户iCloud存储中的容器目录列表。 (此字段对应于com.apple.developer.ubiquity-container-identifiers权限)。 您添加到此列表中的字符串必须对应于您团队创建的应用程序的捆绑标识符。 Xcode使用当前应用程序的捆绑标识符来指定第一个字符串; 如果您希望多个应用程序共享主容器目录,则可以将其更改为不同的捆绑标识符。 您还可以为团队的其他应用程序添加其他捆绑标识符。


3

Dan Grisby的最新移动果园播客假设您也可以使用自定义命名的剪贴板在应用程序之间共享信息。我意识到这是一篇较旧的文章,但我认为我应该指出这一点,因为它在谷歌搜索结果中排名很高。 :)

(文档还建议在此处使用NSUserDefaults可能很有用,但我已经在其他地方阅读到,实际上并非如此。)


3
我能想到的一个技巧是使用API 写入和读取通讯录,将数据存储在可用字段中(可能需要将用户图像转换为NSData)。编辑:我已经成功实现了NSData转换和对象存储在联系人的显示图像中,因此它们无法从联系人应用程序中进行编辑。

不错的技巧,但我想最终用户可能会对他们的地址簿中有垃圾信息感到恼火。 - Simon Woodside
@sbwoodside 不用担心,我们会在应用程序中加入阿普唑仑药丸,这样他就不会那么烦了。说真的,我选择了提供问题中所要求的全部功能的路径...这总是伴随着提醒“小心你所希望的,因为你可能会得到它”的提示,在这种情况下,伴随着一个看似空白的通讯录记录的轻微烦恼。 - luvieere
你能否将这些数据存储在已存在联系人的图像中?比如追加垃圾信息或者EXIF信息。 - RolandasR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接