Файл, предоставленный через AirDrop, не завершен

Я работаю над приложением, одной из функций которого является загрузка и отображение файлов 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.

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


person Andrii Chernenko    schedule 19.11.2018    source источник


Ответы (1)


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

person Onne van Dijk    schedule 15.08.2019