iOS - Swift - Проблемы с вставкой в файлы (pdf, docx) с помощью UIPasteboard из почтового вложения Apple
Я работаю над приложением, которое позволяет пользователю вставлять файлы (например,.pdf и.docx) в приложение. У меня он работает хорошо, за исключением случаев, когда файл копируется долгим нажатием вложения в собственном приложении Mail.
Я знаю, что проблема не в файле, потому что если я долго нажимаю одно и то же вложение в том же электронном письме и вместо того, чтобы выбирать "копировать", я выбираю "Поделиться", а затем "копировать" из общего листа, я могу вставить файл успешно.
При наклеивании работаю с
UIPasteboard.general.itemProviders.first
. В обоих сценариях, описанных выше, есть только 1 элемент в
UIPasteboard.general.itemProviders
, однако распечатав описание
UIPasteboard.general.itemProviders[0]
Я вижу следующее:
Для файлов PDF: при копировании непосредственно после длительного нажатия (неудачный сценарий):
<UIItemProvider: 0x28255a290> {types = (
"com.apple.mobilemail.attachment",
"com.adobe.pdf",
"public.url"
)}
При копировании из того же PDF-файла из того же электронного письма и долгого нажатия с последующим нажатием "Поделиться", а затем "копировать" (успешный сценарий):
<UIItemProvider: 0x28255b2c0> {types = (
"com.adobe.pdf"
)}
Для файлов docx: при копировании напрямую из длительного нажатия (неудачный сценарий):
<UIItemProvider: 0x28055d6c0> {types = (
"com.apple.mobilemail.attachment",
"com.apple.WebKit.custom-pasteboard-data",
"Apple Web Archive pasteboard type",
"org.openxmlformats.wordprocessingml.document"
)}
При копировании с помощью длительного нажатия с последующим нажатием "Поделиться", затем "Копировать" (успешный сценарий) для того же файла docx из того же электронного письма:
<UIItemProvider: 0x28055c8c0> {types = (
"org.openxmlformats.wordprocessingml.document"
)}
Мне нужна помощь с двумя проблемами, с которыми я столкнулся:
UIPasteboard.general.itemProviders.first?.suggestedName
возвращает неправильное имя файла для PDF-файлов, но в успешном сценарии тот же код возвращает правильное имя файла.При работе с файлами docx данные из
self.data(forPasteboardType: "org.openxmlformats.wordprocessingml.document")
в расширении UIPasteboard различается в двух сценариях (распечатка данных показывает, что количество байтов разное), и в неудачном сценарии этот файл нельзя открыть с помощью QLPreviewItem, но может в успешном сценарии.
Ясно, что мне не хватает чего-то при обработке почтовых вложений (и возможных других сценариев), что вызывает эти проблемы, но я не уверен, что именно. Любая помощь будет принята с благодарностью!!!