2017-09-25 51 views
1

所以基本上我一直在尝试创建一个非常简单的iMessage应用程序,当按下按钮时,它会在对话中插入一条消息,如本教程中所示:我遇到的问题是,当按钮被按下时,它会运行该功能,但结果是什么也没有发生,我真的不确定这是为什么。我一直在努力寻找一个解决这个问题的工作一段时间,如果有人愿意快速浏览我的代码,并且指出我出错的地方或者我错过了某些东西。对此主题的任何帮助将不胜感激,谢谢。插入消息,iMessage应用程序swift 3

@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

它看起来正确,尝试调用解雇()末?

下面是工作的代码,我

@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

+0

感谢您的解决方案工作出色! – imjonu

相关问题