iOS Apps共享文档目录

DHa*_*ick 8 iphone ios

两个应用程序是否有可能访问其他应用程序中的文档,因为它们具有相同的bundle seed id.我知道可以与共享捆绑种子ID的应用程序共享钥匙串中的项目(请参阅此处).

例如,假设您有一个具有免费版本和付费版本的应用程序.有人从免费升级到付费版本之后,您是否可以将其数据迁移到付费版本?

Hei*_*erg 4

您不能在应用程序之间共享文档目录。但还有其他沟通渠道。

正如您提到的,钥匙扣是一种可能性。

另一个可能是自定义 URL 方案。也许有点像这样:

  1. 免费应用程序注册了使用该方案打开 URL 的功能freeapp://。同样,专业应用程序注册使用该方案打开 URL 的能力proapp://。使用信息 plist 中的“URL 类型”条目。
  2. 专业应用程序检查是否[UIApplication canOpenURL:@"freeapp://goPro"] == YES
  3. 如果为真,专业应用程序将调用[UIApplication openURL:@"freeapp://goPro"]
  4. handleOpenURL这将启动必须从实施的免费应用程序UIApplication
  5. 该免费应用程序将必要的数据打包在 URL 中。如果您愿意,可以使用类似 HTTP 的参数。您还可以构建一个字典并使用 将其序列化为长十六进制字符串NSCoding
  6. 免费应用程序使用以下方式将数据传回专业应用程序[UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
  7. handleOpenURL专业应用程序在其重写的from实现中接收 URLUIApplication并执行必要的数据迁移。

显然您想要使用比上面更独特的 URL 方案。

不过,请考虑使用 URL 将此类数据注入应用程序的安全隐患。对于很多用途来说,它可能没问题,但我确信,如果 Facebook 应用程序提供了一种通过 URL 破坏你的帐户设置的方法,有些人会觉得到处张贴facebookapp://reset_my_account链接很搞笑。

额外提示: URL 方案对于弥合本机代码和 Web 视图之间的差距也非常方便。我有一些带有嵌入式 Web 视图的应用程序,显示我控制下的服务器上的页面。网页可以通过 JS 设置文档位置来与应用程序对话。应用程序可以拦截 Web 视图委托中的请求,并使用 与 Web 视图进行对话stringByEvaluatingJavaScriptFromString