iPhone中的“打开方式”应用程序如何工作?

据我所知,在iOS SDK 3.2中,添加了文件类型处理,iOS应用程序可以将自身与某种文件类型相关联,以便其他应用程序可以使用该应用程序打开此类文件。

由于iOS中的沙箱机制,我想知道appA中的文件何时用appB打开,appB注册了这种文件,会发生什么? 此文件是否已复制到appB,appA和appB都会保留此文件的副本? 如果答案是肯定的,是否可以让appB在appA的文档文件夹下打开文件? 我找不到任何Apple文档。

例如,appA在其中存储Keynote文档,如果我使用Keynote应用程序打开此Keynote文档,是否可以让Keynote应用程序编辑此文档,以便在编辑后,appA可以看到更新的文档?

任何帮助表示赞赏。

这里有几个不同的问题。

当您使用info.plist条目注册应用程序以处理Document types您的应用程序将位于使用该文件执行操作时显示的应用程序列表(例如,在电子邮件中点击文件附件)。 然后,当您的应用程序启动时,方法application:didFinishLaunchingWithOptions:正常运行,而launchOptions字典将包含发送到您的应用程序的文件的路径。 你从那里对文件做什么取决于你,但它是文件的副本 ,而不是它的链接。 因此,如果用户在原始应用中对文件进行了更改,则必须使用新文件再次“启动”您的应用。

有关详细信息,请参阅此处: http : //developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application : didFinishLaunchingWithOptions :

您无法使用当前SDK访问任何其他应用程序的文档文件夹。

此外,要在iTunes中共享文档(如页面,数字等),请查看两个info.plist条目Document typesUIFileSharingEnabled 。 (苹果文档: http : //developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW20 )基本上,通过设置UIFileSharingEnabled如果您将在iTunes中公开您的应用程序的/Documents目录。 然后再次由您向用户显示一旦他们回到您的应用程序中该目录中的内容。

Sndbox通过标准的unix权限控制实现。 所有应用程序都存储在具有唯一名称(实际上是GUID)的文件夹中,但是它们的所有者是相同的移动设备:移动设备。 所以看起来他们只是向应用程序发送完整的文件路径,打开相应的文件。