我正在开发我的存储提供程序并使用Apple的“NewBox”(它的链接已过期)示例代码作为主机应用程序。理想情况下,我希望看到我可以将文件从存储提供程序导入(复制)到我的NewBox的沙箱或导出/移动文件到其他应用程序。
在NewBox主机应用程序中,当我想导入文件时,我使用:
UIDocumentMenuViewController *vc = [[UIDocumentMenuViewController alloc] initWithDocumentTypes:@[(NSString *)kUTTypeRTF,(NSString *)kUTTypePNG,(NSString *)kUTTypeText,(NSString *)kUTTypePlainText,(NSString *)kUTTypePDF, (NSString *)kUTTypeImage] inMode:UIDocumentPickerModeImport];
一旦我拿起一个文件,在我的UIDocumentPickerExtensionViewController中,我调用:
- (void)pickDocument:(NSURL *)documentURL {
[self dismissGrantingAccessToURL:documentURL];
}
在调用dismissGrantingAccessToURL之后,选择器的视图将被解除并返回到主机应用程序,并且将调用主机应用程序的didPickDocumentAtURL。
然而," didPickDocumentAtURL"接收我选择的原始文件的URL,而不是系统复制到NewBox的沙箱的新URL。这对出口和搬迁的情况也很熟悉。 我是否误解了导入/导出/移动?我认为关于复制到主机应用程序沙箱等文件的操作是由系统完成的,主机应用程序将获取要访问的文件的新URL。
我已尝试使用iOS8 beta4,此问题仍然存在。
谢谢!
答案 0 :(得分:3)
您从documentPicker:didPickDocumentAtURL:
获得的网址取决于操作:
导入/导出:/data/Containers/Data/Application/$(AppIDOfAppPresentingUIDocumentPickerViewController)/tmp/DocumentPickerIncoming/File.txt
打开/移动:
/data/Containers/Shared/AppGroup/$(ExtensionAppGroupID)/File%20Provider%20Storage/File.txt
Where" File.txt"可以是任何文件名或文件路径。
如果是导入,则呈现选择器的应用程序负责将给定URL处的文件移动到永久位置。在打开或移动的情况下,应用程序应该保存URL以供将来使用(始终在文件协调器中使用它)。如果是导出,通常会忽略URL。
NewBox项目可以从Apple的网站https://developer.apple.com/devcenter/download.action?path=/wwdc_2014/wwdc_2014_sample_code/newboxanintroductiontoiclouddocumentenhancementsinios8.0.zip
下载