2017-09-25 3 views
1

Also im Grunde habe ich versucht, eine sehr einfache iMessage-Anwendung zu erstellen, wo eine Taste in die Konversation eingefügt wird, ein bisschen wie das, was in diesem Tutorial zu sehen ist: Die einzige Problem, das ich habe, ist, dass, wenn der Knopf gedrückt wird, es die Funktion ausführt, jedoch nichts als Ergebnis auftritt und ich bin wirklich unsicher, warum dies der Fall ist. Ich habe seit einiger Zeit damit zu kämpfen, eine funktionierende Lösung für dieses Problem zu finden, und würde es sehr begrüßen, wenn jemand so nett wäre, einen kurzen Blick auf meinen Code zu werfen und vielleicht darauf hinzuweisen, wo ich falsch gelaufen bin . Jede Hilfe zu diesem Thema wird sehr geschätzt, danke.Nachricht einfügen, iMessage-Anwendung 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) 

} 

Antwort

1

Es sieht richtig, versuchen entlassen() aufzurufen am Ende?

Hier ist der Code, der für mich

@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() 
} 

funktioniert und wie ich die Meldung

// 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

Danke für die Lösung hervorragend gearbeitet bin schaffen! – imjonu