#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:
Пара идей:
- Внедрите CloudKit для сохранения / запроса изображения (или другое «облачное» решение) и используйте message.url для обмена URL-адресом изображения
- Если изображение создано, а не является ресурсом, используйте 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 кб символов, поэтому это не удается.