插入消息,iMessage应用程序swift 3

时间:2017-09-25 23:32:30

标签: ios swift swift3 imessage imessage-extension

所以基本上我一直在尝试创建一个非常简单的iMessage应用程序,当按下按钮时,它会在对话中插入一条消息,就像本教程中可以看到的那样:我唯一的问题是当按下按钮,然后运行该功能,结果没有任何结果,我真的不确定为什么会这样。我一直在努力寻找一个解决这个问题的工作解决方案一段时间了,如果有人能够快速查看我的代码并且可能指出我哪里出错或者我是谁,我会非常感激遗漏了什么。非常感谢您对该主题的任何帮助,谢谢。

 @IBAction func funcSend(_ sender: Any) {

    let conversation = activeConversation
    let session = conversation?.selectedMessage?.session

    let layout = MSMessageTemplateLayout()
    layout.caption = "Hi there"

    var components = URLComponents()
    let queryItem = URLQueryItem(name: "key", value: "value")
    components.queryItems = [queryItem]

    let message = MSMessage(session: session!)
    message.layout = layout
    message.url = components.url
    message.summaryText = "Sent hi there message"

    conversation?.insert(message)

}

1 个答案:

答案 0 :(得分:1)

看起来是对的,试着在最后调用 dismiss()吗?

这是适合我的代码

@IBAction func onSend(_ sender: Any) {
    print("sending...")
    guard let conversation = activeConversation else { fatalError("Expected a conversation") }
    guard let message = composeMessage(session: conversation.selectedMessage?.session)
        else { return }

    // Add the message to the conversation.
    conversation.insert(message) { error in
        if let error = error {
            print(error)
        }
    }
    // This one
    dismiss()
}

我是如何创建消息的

// MARK: Messaging
func composeMessage(session: MSSession? = nil) -> MSMessage? {
    let layout = MSMessageTemplateLayout()
    var components = URLComponents()
    let caption = URLQueryItem(name: "caption", value: self.melody)
    let decodedMelody = URLQueryItem(name: "melody", value: self.melody)

    components.queryItems = [caption, decodedMelody]

    let message = MSMessage(session: session ?? MSSession())
    layout.image = self.screenImage.image

    layout.caption = "Melody built with haptic and vibro."
    layout.subcaption = "sent via iVibrio"
    message.summaryText = "something summary"

    if let conversation = activeConversation,
        let msg = conversation.selectedMessage{

        if msg.senderParticipantIdentifier == conversation.localParticipantIdentifier {
            layout.caption =  "$\(msg.senderParticipantIdentifier.uuidString) My msg"
        }
        else{
            layout.caption =  "$\(msg.senderParticipantIdentifier.uuidString) Edited msg"
        }
    }

    message.url = components.url!
    message.layout = layout

    return message
}

Link to the complete example/code