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

时间:2008-10-21 03:00:05

标签: iphone cocoa-touch

如果我制作两个iPhone应用程序,我怎么能/应该在其中共享自定义数据(不是联系人和类似的东西)?

谢谢!

5 个答案:

答案 0 :(得分:19)

有两种不同的方法可以解决这个问题。

1)您需要共享的数据是非持久性的。换句话说,您需要使用一段可以执行某些操作的数据启动一个应用程序。在这种情况下,您将为每个应用程序注册一个特殊的URL方案。

您可以通过他的[redacted] blog post中的Craig Hockenberry找到有关网址方案的更多信息。

2)您需要共享的数据是持久的。换句话说,您需要类似于两个应用程序都可以读写的数据文件。据我所知,除了将数据存储在远程服务器上之外,没有一种安全的方法可以做到这一点。如果您需要在没有数据连接的情况下访问数据,那么您需要找到一种在各个应用程序和远程服务器之间同步数据的方法。

答案 1 :(得分:19)

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

答案 2 :(得分:5)

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

来自Apple's doc on configuring your iCloud entitlements

  

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

答案 3 :(得分:3)

Dan Grisby的most recent mobile orchard podcast假设您也可以使用自定义命名剪贴板在应用之间共享信息。我意识到这是一个较旧的帖子,但我想我会指出这一点,因为它在google结果上很高。 :)

(文档还建议NSUserDefaults在这里可能有用,但我read elsewhere实际上并非如此。)

答案 4 :(得分:3)

我能想到的一个hack是writing to and reading from the Address Book,使用API​​,将数据存储在可用字段中(或许是用户图像的NSData转换)。编辑:我已经成功实现了NSData转换并将对象存储在联系人的显示图像中,从而使其无法从联系人应用程序中进行编辑。