Могу ли я закодировать UI-изображение в URL, который отправляется с MSMessage в расширении приложения iMessage?

#swift3 #ios10 #imessage #msmessage

#swift3 #ios10 #imessage #msmessage

Вопрос:

Я пытаюсь отправить изображение вместе с сообщением, которое мое приложение создает и вставляет для отправки другим пользователям. Изображение будет тем же изображением, которое используется в свойстве layout сообщения, но, по-видимому, нет способа получить доступ к свойству image в макете сообщения на стороне принимающего пользователя.

Возможно ли отправить изображение по URL, прикрепленному к сообщению, а затем получить к нему доступ в экземпляре приложения второго пользователя? Как я мог бы это сделать?

Комментарии:

1. Как насчет того, чтобы просто попробовать? Просто передайте изображение как NSData или данные (swift 3) и посмотрите, что произойдет 😉 В UIImage есть функции инициализации, которые принимают данные

2. Однако полезная нагрузка MSMessage — это URL-адрес. Я не могу просто отправить все, что хочу, с сообщением, иначе я мог бы просто отправить изображение.

3. Вы можете преобразовать изображение в строку base64 и отправить его через URLQueryItem. Я надеюсь, что это может быть полезно.

4. URL-адрес ограничен 5000 символами, изображение, которое я преобразовал, в результате составило 29 тыс. символов. Хотя идея хорошая.

Ответ №1:

Пара идей:

  1. Внедрите CloudKit для сохранения / запроса изображения (или другое «облачное» решение) и используйте message.url для обмена URL-адресом изображения
  2. Если изображение создано, а не является ресурсом, используйте message.url для передачи «инструкций» по восстановлению, если это возможно?

Ответ №2:

Поскольку схема URL iMessage поддерживает 5000 символов, как написано в документации Apple: https://developer.apple.com/reference/messages/msmessage/1649739-url

Вы можете использовать convert your UIImage to NSData, а затем преобразовать NSData в String и отправить строку в схеме URL. Для извлечения выполните декодирование из строки в UIImage.

Например.:

 let image = UIImage.init(named: "myImage.png")
let data = UIImagePNGRepresentation(image!)
let strImageData = data?.base64EncodedString(options: .lineLength64Characters)
  

Надеюсь, это поможет

Комментарии:

1. Спасибо за рекомендацию, но я уже пробовал это, и изображение выдает строку из 29 кб символов, поэтому это не удается.