iOS, как получить доступ к частному файлу для расширения общего доступа

Я пытался получить доступ к файлу с моим расширением общего доступа, если файл из приложения для фотографий, я могу получить к нему доступ, путь к файлу:

file:///var/mobile/Media/PhotoData/OutgoingTemp/11485686-0D4A-4637-AA50-B14D83E18B01/RenderedPhoto/IMG_4807.JPG

но когда я пытаюсь получить доступ к файлу по «частному» пути, я не могу получить к нему доступ, как файл MS Word:

file:///private/var/mobile/Containers/Data/Application/196D7E75-87B6-4C69-B97A-74E58DF4AD65/tmp/ShareAttachments/%7BE73A233D-D10E-814D-AEB1-0C8C8AC9BFAA%7D/Document%20(7) .docx

Итак, мой вопрос: как получить доступ к файлу? такие приложения, как WhatsApp или Slack, могут иметь доступ к файлу и прикреплять его...

Как получить доступ к этому файлу? они используют «группы приложений»? как они получают идентификатор для группы приложений? или как получить доступ к файлу?


person manuelBetancurt    schedule 15.06.2018    source источник
comment
Что происходит, когда вы пытаетесь получить доступ к docx файлу? Файл не существует или выдает какие-либо ошибки? Лучше, если вы сможете указать, где хранится docx файл   -  person trungduc    schedule 18.06.2018
comment
@trungduc говорит, что его не существует. Xx.docx находится по указанному выше пути в частном / var, спасибо   -  person manuelBetancurt    schedule 18.06.2018
comment
На самом деле, если это проблема с private/, вы можете удалить его из URL, используя URLByResolvingSymlinksInPath   -  person trungduc    schedule 18.06.2018
comment
Или, может быть, этот easynativeextensions.com /   -  person trungduc    schedule 18.06.2018
comment
Что вы имеете в виду, говоря, что я не могу получить к нему доступ? Есть ли ошибка? Каковы ваши настройки NSExtensionActivationRule в вашем расширении Info.plist? Ожидается, что это будет проблемой, если вы не объявите что-то вроде: NSExtensionActivationSupportsFileWithMaxCount.   -  person David J    schedule 25.06.2018


Ответы (2)


Для Share Extension вам нужно получить файл от NSItemProvider, который хост-приложение передает вашему расширению общего доступа.

Для файла это может быть тип Data или тип URL. Если это данные, вам нужно привести их к нужному вам типу. Если это URL-адрес, вы можете загрузить его.

person Owen Zhao    schedule 25.06.2018