2016-10-15 6 views
0

Интересно, можно ли отправить изображение через сообщение в iMessageExtension. Я разрабатываю приложение, в котором отправителю и получателю необходимо увидеть одно и то же изображение.
В основном здесь DetailViewController с ImageView и ImageView.image должен отправляться с помощью сообщения.Отправка изображения в iMessageExtension

ответ

1

Есть несколько способов сделать это. Если вы просто пытаетесь отправить обычный неанимированный образ, вы можете избежать необходимости сохранять временные файлы на диск (который вы отправляете по телефону insertAttachment на conversation) и вместо этого используйте MSMessageTemplateLayout. Вы можете сделать что-то вроде этого:

let message = MSMessage() 
let layout = MSMessageTemplateLayout() 
layout.image = myImage 
message.layout = layout 
conversation.insert(message, completionHandler: nil) 
+0

Я имею в виду, что, когда приемник прижимает сообщение будет открыть еще один ViewController и в этой точке зрения контроллера покажет изображение изображения, отправленного через сообщение – aatalyk

+0

В основном здесь DetailViewController с ImageView и ImageView.image должен отправляться с помощью сообщения – aatalyk

0

Код ниже фиксирует вид и по существу скриншотах, а затем акции его через IMessage. Протестировано это на iPhone 7 с iOS 10, работает.

let name = "" 
    let desc = "" 

    if MFMessageComposeViewController.canSendText() { 
     let messageVC = MFMessageComposeViewController() 
     messageVC.messageComposeDelegate = self 
     if MFMessageComposeViewController.canSendAttachments() { 
      let img = viewToCapture.getSnapshotImage() 
      let imageData = UIImagePNGRepresentation(img) 
      messageVC.addAttachmentData(imageData!, typeIdentifier: "image/png", filename: "image.png") 
     } else { 
      print("Message can't send attachments") 
     } 
     self.present(messageVC, animated: true, completion: nil) 
    } 

    let messageComposeViewController = configuredMessageViewController(name, detail: desc) 

    if MFMessageComposeViewController.canSendText() { 
     self.present(messageComposeViewController, animated: true, completion: nil) 
    } else { 
     shareStuff.msgError() 
    } 

Обратите внимание, что вышеуказанное расширение UIView используется для захвата изображения с экрана. Если это ваше первое расширение, это глобальное так просто поставить код, где когда-либо вы хотите (но не в классе):

public func getSnapshotImage() -> UIImage { 
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, 0) 
    self.drawHierarchy(in: self.bounds, afterScreenUpdates: false) 
    let snapshotImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return snapshotImage 
}