iOS8: поставщик расширений хранилища (импорт, экспорт, перемещение) не работает

Я занимаюсь разработкой своего поставщика услуг хранения и использую образец кода 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 исходного файла, который я выбрал, а не новый URL, который система копирует в "песочницу" NewBox. Это также знакомо обстоятельствам экспорта и перемещения. Я неправильно понимаю импорт / экспорт / перемещение? Я думал, что это действие в отношении файлов, таких как копирование в изолированную программную среду приложения хоста, выполняется системой, и приложение хоста получит новый URL-адрес файла для доступа.

Я пробовал на iOS8 beta4, и эта проблема все еще существует.

Спасибо!

1 ответ

URL, который вы получаете от documentPicker:didPickDocumentAtURL: зависит от операции:

  • Импорт Экспорт:/data/Containers/Data/Application/$(AppIDOfAppPresentingUIDocumentPickerViewController)/tmp/DocumentPickerIncoming/File.txt

  • Открыть /Move:/data/Containers/Shared/AppGroup/$(ExtensionAppGroupID)/File%20Provider%20Storage/File.txt

Где "File.txt" может быть любым именем файла или путем к файлу.

В случае импорта приложение, представляющее средство выбора, отвечает за перемещение файла по указанному URL-адресу в постоянное местоположение. В случае открытия или перемещения приложение, вероятно, должно сохранить URL-адрес для будущего использования (всегда используйте его в качестве координатора файлов). В случае экспорта URL обычно игнорируется.

Проект NewBox можно загрузить с веб-сайта Apple https://developer.apple.com/devcenter/download.action?path=/wwdc_2014/wwdc_2014_sample_code/newboxanintroductiontoiclouddocumentenhancementsinios8.0.zip

Другие вопросы по тегам