【问题标题】:How can I transfer a document between two apps on the same iOS device?如何在同一 iOS 设备上的两个应用程序之间传输文档?
【发布时间】:2012-03-20 15:29:26
【问题描述】:

我有一个 iPhone 应用程序,我的一些用户正在他们的 iPad 上以模拟模式运行。我们也在考虑创建一款针对 iPad 优化的应用,这将是 App Store 中的一个单独应用(功能更多,价格不同)。

问题是:如果用户在 iPad 上运行 iPhone 应用程序,然后他们购买了我们的 iPad 优化版本,他们如何将数据从仅限 iPhone 的应用程序迁移到新的 iPad 应用程序?

以下是我考虑过的一些替代方案:

  • 按照其他 SO 问题中的建议,安全钥匙串。问题是这只允许传输一小部分数据。我们的用户可能拥有数十兆字节的数据
  • 注册 URI 方案(在其他 SO 问题中也有建议,似乎也仅针对非常少量的数据而设计)
  • 让用户将数据从仅限 iPhone 的应用程序上传到 Dropbox 或 box.net 等服务,然后从 iPad 版本再次下载该数据。优点是这些服务具有非常简单的 API;缺点是用户可能需要创建一个额外的帐户和/或下载另一个应用程序才能移动数据
  • 创建一个 iCloud 文档。无需注册,但简单地说,设置 iCloud 存储是不平凡的

是否有任何其他选项可以在同一设备上的两个应用之间传输数十兆字节的数据。

【问题讨论】:

  • 关于 URI 方案仅适用于少量数据的断言,您有什么证据?从应用程序传递到应用程序的 URL 是否有长度限制?否则你可以只对你的数据进行base 64编码,然后把你想要的任何东西放在那里。我不认为 API 中内置了 base 64 编码器(尽管它们真的很容易编写),但是有一个隐式解码器,因为 NSURL 支持data: URL,NSData 可以从它们加载。

标签: iphone ios file-transfer


【解决方案1】:

虽然需要做更多的工作,但考虑到要传输的数据量相对较小,您可以设置一个服务器作为中间人。这样做的最大好处是人们还可以在 iPhone 和 iPad 之间传输数据,而不仅仅是在 iPad 内传输。

它可以像“传输到 iPad”按钮一样简单,然后提示用户创建一个临时用户名和密码,然后将数据传输到 SQL 数据库。然后在 iPad 端,您所要做的就是同步数据、验证和下载。可以清除数据库中超过 10 天的数据,以防止其大小增长。

【讨论】:

  • 不幸的是,正如我所提到的,我们谈论的是数十兆字节的数据。上下发送它需要很长时间,会用完我用户的数据计划,并且需要我为一堆云存储付费。我正在寻找一种在不离开设备的情况下传输数据的方法。
  • @Bill 几十兆的 wi-fi 用不了太长时间,而且提供好的服务要花钱:)
【解决方案2】:
【解决方案3】:

您可以使用UIDocumentInteractionController 让用户在设备上已注册支持文档类型的任何应用中打开文档。

这仍会在 iPad 应用程序的沙箱中制作文档副本。没有办法解决这个问题。

【讨论】:

  • 您需要哪些我链接的指南中没有的详细信息?
  • 好吧,例如:新的 iPad 应用程序如何获取另一个应用程序中文档的路径或句柄?指南中的描述建议您只有在使用特定参数启动应用程序委托时才能打开文件。这听起来像是一种很有前途的方法(不涉及远程传输,没有单独的帐户),但我从未听说过以这种方式使用 UIDIC。
  • 当用户选择打开文档时,系统会将application:openURL:sourceApplication:annotation:发送到您的application delegate。如果您尚未运行,您会在 application:didFinishLaunchingWithOptions: 之后收到此信息。
  • 我想我的问题是:整个过程如何运作? iPad 应用程序是否显示带有某些过滤器的 UIDIC,其中将包含来自仅 iPhone 应用程序的文件?如何获取另一个应用程序沙箱中文件的 URL/路径?原始 iPhone 应用程序是否获得应用程序委托方法或 iPad 应用程序?这是一个有趣的提示,但我仍然无法看到它是否解决了我的整个问题。
  • 在您的 iPhone 应用程序中创建控制器。如果用户选择在 iPad 应用中打开文档,系统会将文件复制到 iPad 应用的沙箱中。
猜你喜欢
  • 2011-11-07
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多