iphone - iOS 应用程序共享文档目录

标签 iphone ios

如果两个应用程序具有相同的 bundle seed id,它们是否可以访问彼此应用程序中的文档。我知道可以与共享 bundle 种子 ID ( see here) 的应用程序共享钥匙串(keychain)中的项目。

例如,假设您的应用程序有免费版和付费版。在有人从免费版本升级到付费版本后,您是否可以将他们的数据迁移到付费版本?

最佳答案

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

正如您提到的,钥匙串(keychain)是一种可能性。

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

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

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

不过,考虑一下能够使用 URL 将此类数据注入(inject)您的应用程序的安全隐患。对于许多用途来说,这可能没问题,但我敢肯定,如果 Facebook 应用程序提供了一种通过 URL 更改您的帐户设置的方法,一些人会发现随处发布 facebookapp://reset_my_account 链接很有趣.

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

关于iphone - iOS 应用程序共享文档目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097185/

相关文章:

iphone - 如何以编程方式 "follow"iOS 应用程序中的 Twitter 提要?

iphone - UIButtons 事件 Touch up 里面不能正常使用?

iphone - 如何在 iPhone 上播放 AMR 音频文件

ios - VPN Apple iOS 隐藏 API

php - 快速发布任何内容的 POST 请求

iphone - 滚动 TableView 时自定义标签值消失

iphone - 错误 : The bundle uses a bundle name or display name associated with an Apple app

iphone - 是否可以在 iphone 的设置中检测 facebook 登录状态?

ios - 如何在 Parse 中存储自定义对象数组?

ios - swift/iOS |如何启用 'press and hold' 以在 UIWebView 中保存图像?