0

iOS 中是否有一个所有应用程序都可以访问的临时目录,以便在它们之间传递文件?

请注意:我了解 UIDocumentInteractionController 的“打开方式”菜单。我希望通过在 UIApplication 上调用 openURL 来传递文件。我试图不使用“打开方式”菜单。

4

2 回答 2

4

不,没有。唯一共享的位置(在某种意义上)是照片库,每个应用程序都可以使用它来加载和保存图像(如果用户允许的话)。除此之外,每个应用程序只能访问其自己的 Documents、Library 等文件夹。

(当然我不是在谈论越狱设备。)

于 2013-03-30T15:24:37.960 回答
2

正如“Martin R”所指出的,在任何地方都没有可用于此目的的通用目录。

由于您可以控制这两个应用程序,因此您确实有一个解决方案可以让这两个应用程序共享文件和/或数据。这将需要更新两个应用程序以支持此功能。

解决方案涉及使用UIPasteBoard. 您可以使用通用粘贴板,也可以使用名为“私有”的粘贴板。如果您使用命名粘贴板,则两个应用程序需要就名称达成一致(或者可以在调用时将名称作为 URL 的一部分传递openURL:)。

setData:forPasteBoardType:在(命名或通用)粘贴板上调用源应用程序。然后源应用程序应该创建一个指向另一个应用程序的 URL。URL 应包含几个查询参数,其中包括粘贴板的名称(如果适用)以及用于设置数据的粘贴板类型。

当接收应用程序启动时,它会获取查询参数并使用这些参数来获取粘贴板,然后是具有正确类型的数据。

如果您需要传递的文件太大,此解决方案可能会出现问题。我已经将它用于数兆字节的文件。由于数据正在加载到内存中,因此数据量必须有上限。请在您希望传输的最大文件的真实设备上进行正确测试。

于 2013-03-30T21:36:02.990 回答