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

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

谢谢!

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

1)您需要共享的数据是非持久性的。 换句话说,你需要用一个可以做某事的数据来启动一个应用程序。 在这种情况下,您将为每个应用程序注册一个特殊的URLscheme

您可以在他的[编辑]博客文章中通过Craig Hockenberry了解更多关于URLscheme的信息 。

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

除了已经提到的内容之外,关于代码签名的iPhone文档似乎意味着使用相同身份签名的应用程序可以访问相同的钥匙串项目。 如果你需要存储相对less量的数据(密码等),这可能是一个有用的技术。

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

从苹果的configuration您的iCloud权利的文档 :

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

Dan Grisby 最近的移动果园播客推测,你也可能使用自定义的命名剪贴板来共享应用程序之间的信息。 我意识到这是一个较旧的post,但我想我会指出这是因为它的谷歌结果高。 🙂

(文档也表明, NSUserDefaults可能在这里很有用,但是我在其他地方读过 ,实际上并非如此。)

我能想到的一个黑客就是用通讯录写入和读取 API,将数据存储在可用的字段(也许为用户图像+ NSData转换)。 编辑:我已经成功实现NSData转换和存储在联系人的显示图像内的对象,从而使他们从联系人应用程序不可编辑。