Быстрое прикрепление изображения к iMessage

Я пытаюсь написать программу, которая при нажатии на изображение, сохраненное в приложении, открывает iMessage с изображением в теле, готовом к отправке. Это работает за исключением того, что изображение появляется в тексте в виде файла с именем, которое вы можете открыть с помощью Dropbox или какого-либо подобного приложения. Есть ли способ на самом деле поместить изображение в текст, например, когда вы отправляете фотографию из вашей библиотеки? Вот код моего сообщения:

 func launchMessageComposeViewController(image: UIImage) {
        if MFMessageComposeViewController.canSendText() {
            let messageVC = MFMessageComposeViewController()
            messageVC.messageComposeDelegate = self
            var imageData = UIImagePNGRepresentation(image)
            messageVC.addAttachmentData(imageData!, typeIdentifier: "png", filename: "pic")
            self.presentViewController(messageVC, animated: true, completion: nil)
        }
        else {
            print("User hasn't setup Messages.app")
        }
    }

Спасибо!

2 ответа

Попробуйте это так.

messageVC.addAttachmentData(
                             imageData, 
                             typeIdentifier: "public.data", 
                             filename: "image.png"
                            )

Решение для Swift 4.2/5

let imageData = image.pngData()

Проблема заключается в значении, которое передается как параметр "имя файла" в функции addAttachmentData. Он должен иметь действительное расширение. то есть, если вы предоставляете данные изображения png, значение, передаваемое как "имя файла", должно быть "pic.png", а не "pic". Также для typeIdentifier вы должны использовать значение kUTTypePNG (определенное в модуле MobileCoreServices), приведенное к String.

Другие вопросы по тегам