【问题标题】:How to get MSMessage summary text from Received Message?如何从收到的消息中获取 MSMessage 摘要文本?
【发布时间】:2016-10-05 14:46:09
【问题描述】:

我在 MSMessage 中传递摘要消息,但是当尝试获取另一端收到的消息时,它返回 nil。

以下是创建消息的代码

fileprivate func composeMessage(with url: String, andEventInfo eventInfo: NSDictionary?) -> MSMessage {

    let message = MSMessage(session:MSSession())
    message.url = URL(string: url)
    message.layout = createTemplateForEvent(eventInfo: eventInfo!)
    message.summaryText = "SAMPLE MESSAGE"
    return message
}

在当前对话中发送消息

let message = composeMessage(with: url!,andEventInfo: eventInfo)
    activeConversation?.insert(message, completionHandler: { (error) in

        print(error)
    })

现在,在接收端

这里summaryText 返回零。

override func didReceive(_ message: MSMessage, conversation: MSConversation) {

     print("DID RECEIVE MESSAGE: \(message.summaryText)")        
}

当用户点击消息时,它也会返回 nil

override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
    guard let conversation = activeConversation else { fatalError("Expected an active converstation") }

    // Present the view controller appropriate for the conversation and presentation style.
    if presentationStyle == .expanded {

        if conversation.selectedMessage != nil {

            print(conversation.selectedMessage?.summaryText)

            presentViewController(for: conversation, with: presentationStyle)
        }

    }

}

任何人都有想法,为什么会发生这种情况或任何事情出错?

【问题讨论】:

    标签: ios swift3 imessage ios-extensions imessage-extension


    【解决方案1】:

    希望对你有帮助

    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

    另请参考:iOS10 iMessage : Unable to insert data into iMessage using MSConversation

    【讨论】:

    • 是的,queryItems 可以很好地使用名称和值对传递消息数据。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-07-25
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多