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