在我的项目中,我添加了iMessage Extension
,但我无法从UITableview
发送所选数据(需要发送选定的行数据)
声明
var savedConversation: MSConversation?
我想在用户didselectRow
- Tableview时发送文本,但它没有抛出任何错误,甚至没有进入MSConversation
完成阻止
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let message = MSMessage()
let layout = MSMessageTemplateLayout()
layout.caption = "Win Notification"//post.title
layout.subcaption = "Can share now through win"
layout.trailingSubcaption = "share"
message.url = "http://.."
message.layout = layout
savedConversation?.insert(message, completionHandler: { (error) in
if error == nil {
//error nothing so do something
}else{
print("error in inserting -- \(error)")
}
})
引用链接https://www.captechconsulting.com/blogs/ios-10-imessages-sdk-creating-an-imessages-extension
https://discussions.apple.com/thread/7612113?start=0&tstart=0
答案 0 :(得分:2)
创建iMessage扩展
转到MessagesViewController(由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)
}
}
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
}
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
}
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)")
}
}
}
参考&帮助来源:https://www.hackingwithswift.com/ios10