2017-09-25 6 views
1

J'ai donc essayé de créer une application iMessage très simple où, lorsqu'un bouton est enfoncé, un message est inséré dans la conversation un peu comme ce qui peut être vu dans ce tutoriel: Le seul problème que j'ai est que lorsque le bouton est pressé, il exécute la fonction cependant, rien ne se produit en conséquence et je ne sais pas vraiment pourquoi c'est le cas. J'ai eu du mal à trouver une solution de travail à ce problème pendant un petit moment maintenant et je serais vraiment reconnaissant si quelqu'un serait assez aimable pour jeter un coup d'œil à mon code et peut-être indiquer où je me suis trompé ou s'il me manque quelque chose . Toute aide sur le sujet sera grandement appréciée, merci.Insérer un message, application 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) 

} 

Répondre

1

Il semble bien, essayez d'appeler rejeter() à la fin?

est ici le code qui fonctionne pour moi

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

Et comment je suis créer le message

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

Merci pour la solution a fonctionné à merveille! – imjonu