首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS10 iMessage :无法使用MSConversation将数据插入到iMessage中

iOS10 iMessage :无法使用MSConversation将数据插入到iMessage中
EN

Stack Overflow用户
提问于 2016-09-19 18:38:37
回答 1查看 792关注 0票数 2

在我的项目中,我添加了iMessage Extension,但我无法从UITableview发送选定的数据(需要发送选定的行数据)

声明

代码语言:javascript
复制
 var savedConversation: MSConversation?

我想在用户didselectRow - Tableview时发送文本,但它没有抛出任何错误,甚至没有转到MSConversation完成块

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2016-09-30 21:40:45

这段代码适用于我

Step1

创建iMessage扩展

Step2

转到MessagesViewController(由扩展创建)

代码语言:javascript
复制
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中

代码语言:javascript
复制
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
}

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

代码语言:javascript
复制
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
}

检查此委派接收到的消息

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39571141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档