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];
}


После вызова rejectGrantingAccessToURL представление средства выбора будет закрыто и возвращено обратно в основное приложение, а также будет вызван didPickDocumentAtURL основного приложения.

Однако «didPickDocumentAtURL» получает URL-адрес исходного файла, который я выбрал, а не новый URL-адрес, который система копирует в песочницу NewBox. Это также знакомо обстоятельствам экспорта и перемещения. Правильно ли я понимаю импорт/экспорт/перемещение? Я думал, что это действие с файлами, такое как копирование в изолированную программную среду хост-приложения, выполняется системой, и хост-приложение получит новый URL-адрес файла для доступа.

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

Спасибо!


person user3793349    schedule 22.07.2014    source источник
comment
Привет.. Этот метод у вас работает?.. После того, как я выбираю документы из iCloud, управление даже не переходит к этому методу.. что я здесь упускаю?   -  person Shikha Shah    schedule 10.10.2014
comment
Вы имеете в виду didPickDocumentAtURL хост-приложения? Это может быть ошибка, которая иногда не вызывается. Я вручную закрою приложение и попробую еще раз, чтобы оно было правильно вызвано.   -  person user3793349    schedule 17.10.2014


Ответы (1)


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

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

  • Открыть/Переместить: /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

person davidisdk    schedule 23.10.2014
comment
Можете ли вы помочь с stackoverflow.com/questions/30613645/ - person Durgaprasad; 08.06.2015