iOS,是否有一个临时目录,所有应用程序都可以看到?

时间:2013-03-30 15:16:42

标签: ios objective-c uidocumentinteraction

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

请注意:我理解UIDocumentInteractionController的“Open In”菜单。我希望通过在UIApplication上调用openURL来传递文件。我正在尝试不要使用“打开”菜单。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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

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

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

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

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