所以基本上我一直在尝试创建一个非常简单的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)
}
答案 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
}