Файл, переданный через AirDrop, является неполным - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю над приложением, одной из функций которого является загрузка и отображение файлов PDF. У меня не было проблем с реализацией этих функций. Затем я хотел разрешить общий доступ к файлам, но столкнулся со странной проблемой.

Вот как выглядит мой код для обмена:

log.debug("Will share file: '\(fileURL.absoluteString)'")
// an example of fileURL: file:///var/mobile/Containers/Data/Application/3A6D5948-8F14-42FB-905A-D776BD975ED1/Library/Caches/d7e635bb-5baa-4fde-b60b-b3fb869cdf46/6.3%20Rambeskrivning%20Mark.pdf

let shareView = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
dependencies.router.show(shareView, asPopoverFrom: barButtonItem)

Ничего особенного, но когда я делюсь файлом через AirDrop, он имеет только 200-250 байт на принимающей стороне и имеет другое имя, что-то вроде "PDF document-373E47D68169-1.pdf" (вместо исходного имени) ).

Моей первой мыслью было, что загруженный документ поврежден, но это не так (я проверял как на устройстве, так и на симуляторе). Если я выберу другую опцию обмена (например, «Сохранить в файлы»), файл будет предоставлен для общего доступа. UIDocumentInteractionController демонстрирует такое же поведение. Я также подумал, что это может быть вызвано тем, что UIActivityViewController не сохраняется (UIDocumentInteractionController требует этого для совместного использования AirDrop), но для этого достаточно позволить системе сделать это.

Проблема воспроизводится на iOS 12.1 и 11.4.1.

Что мне не хватает?

1 Ответ

0 голосов
/ 15 августа 2019

Я столкнулся с той же самой проблемой, где все работало, кроме AirDrop.Оказывается, мой экземпляр URL был относительным, что как-то вызвало проблему с AirDrop.Я решил это, передав activityItems: [fileURL.absoluteURL].

...