据我所知,从iOS SDK 3.2开始,添加了文件类型处理,iOS应用程序可以将自己与某种文件类型相关联,以便其他应用程序可以使用该应用程序打开此类文件。
由于iOS中的沙箱机制,我想知道appA中的文件何时用appB打开,appB注册了这种文件,会发生什么?此文件是否已复制到appB,appA和appB都会保留此文件的副本?如果答案是肯定的,是否可以让appB在appA的文档文件夹下打开文件?我找不到任何Apple文档。
例如,appA在其中存储Keynote文档,如果我使用Keynote应用程序打开此Keynote文档,是否可以让Keynote应用程序编辑此文档,以便在编辑后,appA可以查看更新的文档?
感谢任何帮助。
答案 0 :(得分:9)
这里有几个不同的问题。
使用info.plist条目Document types
注册应用程序以处理文件类型时,您的应用程序将位于使用该文件执行操作时显示的应用程序列表中(例如,点击文件附件在电子邮件中)。然后,当您的应用启动时,方法application:didFinishLaunchingWithOptions:
正常运行,launchOptions
字典将包含发送到您的应用的文件的路径。你对该文件的处理取决于你,但它是文件的副本,而不是它的链接。因此,如果用户在原始应用中对文件进行了更改,则必须使用新文件再次“启动”您的应用。
您无法使用当前SDK访问任何其他应用的文档文件夹。
此外,要在iTunes中共享文档(如页面,数字等),请查看两个info.plist条目Document types
和UIFileSharingEnabled
。 (苹果文档:http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW20)基本上,通过将UIFileSharingEnabled
设置为YES
,您将在iTunes中公开应用的/Documents
目录。然后再次由用户显示用户回到您的应用程序后该目录中的内容。
答案 1 :(得分:0)
通过标准的unix权限控制实现Sndbox。所有应用程序都存储在具有唯一名称(实际上是GUID)的文件夹中,但是它们的所有者是相同的移动设备:移动设备。 所以看起来他们只是将完整的文件路径发送到应用程序,打开相应的文件。