This code works for me
Step1
Create iMessage Extension
Step2
Go to MessagesViewController(created by Extension)
class MessagesViewController: MSMessagesAppViewController {
// ****This code written just for your sample reference********
override func viewDidLoad() {
let button = UIButton(type: .system)
button.sizeToFit()
view.addSubview(button)
loginButton.setTitle("Click to Insert Message!", for: [])
loginButton.addTarget(self, action: #selector(sendMessage(_:)), for: .touchUpInside)
}
}
Inserting Message into iMessage
func sendMessage(_ sender:UIButton) {
let message = composeMessage(customMessage: "Too good!!! & Easy", caption: "Notify:", subCaption:"Caption", trailingCaptionn: "Subcaption", trailingSubcaptionn: "trailing sub caption")
self.activeConversation?.insert(message) // Inserts Message
}
Create Message with available options[this methods returns message]
func composeMessage(customMessage: String, caption: String, subCaptionn: String, trailingCaptionn: String, trailingSubcaptionn: String) -> MSMessage {
var components = URLComponents()
// create a query item from our custom message
let item = URLQueryItem(name: "MyCustomMessage", value: customMessage)
// put it into an array of query items
var items = [URLQueryItem]()
items.append(item)
components.queryItems = items
// tell messages to use the default message template layout
let layout = MSMessageTemplateLayout()
layout.caption = caption
layout.subcaption = subCaptionn
layout.trailingCaption = trailingCaptionn
layout.trailingSubcaption = trailingSubcaptionn
// create a message and tell it the content and layout
let message = MSMessage()
message.url = components.url!
message.layout = layout
// return it for sending
return message
}
Check this Delegate for received message
override func didReceive(_ message: MSMessage, conversation: MSConversation) {
// Called when a message arrives that was generated by another instance of this
// extension on a remote device.
// Use this method to trigger UI updates in response to the message.
guard let messageURL = message.url else { return }
guard let urlComponents = NSURLComponents(url: messageURL, resolvingAgainstBaseURL: false), let queryItems = urlComponents.queryItems else { return }
print("URL Components", urlComponents)
print("queryItems", queryItems)
for item in queryItems {
print("Received \(item.name) with value \(item.value)")
}
}
}
Reference & helped Source: https://www.hackingwithswift.com/ios10