2017-07-06 3 views
1

J'essaie d'ouvrir l'application iMessage avec un message par défaut de mon application. Le message par défaut contient un lien vers l'application dans le magasin d'applications. Ceci est utilisé comme un moyen pour les utilisateurs d'inviter les gens à télécharger l'application.Ouverture d'iMessage avec le corps par défaut contenant un lien

L'utilisateur tape un nombre puis appuie sur un bouton de soumission, puis il ouvre l'application iMessage avec ce numéro et un message rempli. Cependant, pour une raison quelconque, Swift ne générera pas l'URL. Voici ce que j'ai

let body = "Download SomeApp by clicking the link below:\n\nhttps://appsto.re/us/someapp.i" 

guard let phoneUrl = URL(string: "sms:\(numberTextField.text!)&body=\(body)") else { 
      return 
} 

if UIApplication.shared.canOpenURL(phoneUrl) { 
    UIApplication.shared.open(phoneUrl, options: [:], completionHandler: nil) 
} 

Maintenant, il n'est même pas passé la déclaration de la garde.

Tout ce que je veux faire est d'ouvrir iMessage avec un lien vers mon application dans le corps.

Répondre

0

Vous devez échapper le contenu transmis dans le paramètre &body=. Vous pouvez le faire avec addingPercentEncoding.

Par exemple:

let body = "Download SomeApp by clicking the link below:\n\nhttps://appsto.re/us/someapp.i" 

guard let escapedBody = body.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { 
    return 
} 

guard let phoneUrl = URL(string: "sms:\(numberTextField.text!)&body=\(escapedBody)") else { 
    return 
} 
+0

Sweet! Merci beaucoup. Qu'est-ce que cela fait exactement et pourquoi devez-vous le faire pour créer le lien? –