2011-11-11 21 views
8

考虑到它们具有相同的捆绑种子ID,两个应用程序是否可以访问其他每个应用程序中的文档?我知道有可能与共享捆绑种子ID(see here)的应用程序共享钥匙串中的项目。iOS应用程序共享文档目录

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

回答

4

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

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

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

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

显然你想要使用比上面更多的唯一的URL方案。

不过,考虑到能够使用URL将这种类型的数据注入到应用程序中的安全隐患。这可能有很多目的,但我敢肯定,如果Facebook应用程序提供了一种通过URL来破坏帐户设置的方法,有些人会发现在任何地方发布facebookapp://reset_my_account链接都很有趣。

奖励建议: URL架构在缩小原生代码和Web视图之间的差距时也非常方便。我有一些嵌入式Web视图的应用程序,显示我控制的服务器上的页面。通过设置JS的文档位置,网页可以与应用程序通话。该应用程序可以拦截Web查看委托中的请求,并使用stringByEvaluatingJavaScriptFromString与Web视图进行对话。

相关问题