iOS10 iMessage:无法使用MSConversation

时间:2016-09-19 10:38:37

标签: ios swift uitableview ios-app-extension imessage

在我的项目中,我添加了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

1 个答案:

答案 0 :(得分:2)

此代码适用于我

步骤1

创建iMessage扩展

步骤2

转到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)
     }
}

将消息插入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
}

使用可用选项创建消息[此方法返回消息]

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