web-dev-qa-db-fra.com

Envoi d'un message à WhatsApp depuis votre application à l'aide de Swift?

Pour l'une de mes applications, je voulais partager des données avec les contacts WhatsApp. J'ai essayé quelques solutions sur StackOverflow mais je n'ai pas pu obtenir de solution exacte. Après quelques essais, j'ai pu réaliser ce que je cherchais, alors partagez-le ici pour toute référence future.

13
Pandurang Yachwad
 var url  = NSURL(string: "whatsapp://send?text=Hello%20Friends%2C%20Sharing%20some%20data%20here...%20!")

//Text which will be shared on WhatsApp is: "Hello Friends, Sharing some data here... !"

    if UIApplication.sharedApplication().canOpenURL(url!) {
        UIApplication.sharedApplication().open(url as URL, options: [:]) { (success) in
                if success {
                    print("WhatsApp accessed successfully")
                } else {
                    print("Error accessing WhatsApp")
                }
            }
    }

Remarque: le texte doit être encodé en URL. Vous pouvez l'obtenir en utilisant l'un des outils open source sur Internet ou en utilisant la fonction ajoutantPercentEncoding (withAllowedCharacters :) dans iOS. par exemple.

var urlString = "Hello Friends, Sharing some data here... !"
var urlStringEncoded = urlString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
var url  = NSURL(string: "whatsapp://send?text=\(urlStringEncoded!)")
21
Pandurang Yachwad

Swift 3.0

Essayez avec ce code pour accéder à WhatsApp dans votre application. Fonctionne parfaitement pour moi.

@IBAction func sendButtonAction(_ sender: Any)
{
    let date = Date()
    let msg = "Hi my dear friends\(date)"
    let urlWhats = "whatsapp://send?text=\(msg)"

    if let urlString = urlWhats.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) {
        if let whatsappURL = NSURL(string: urlString) {
            if UIApplication.shared.canOpenURL(whatsappURL as URL) {
                UIApplication.shared.openURL(whatsappURL as URL)
            } else {
                print("please install watsapp")
            }
        }
    }
}
7

Outre les solutions ci-dessus, à partir d'iOS 9, nous devons ajouter WhatsApp à la clé LSApplicationQueriesSchemes dans info.plist. Après cela, cela a fonctionné pour moi.

screen shot of solution

4
Lokesh Purohit

Mon code ressemble à ceci

let encodeQuizStr = "Check Out The Quiz With link \n http://www.proprofs.com "

        let urlQuizStringEncoded = encodeQuizStr.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)

        guard let whatsAppUrl = NSURL(string: "whatsapp://send?text="+urlQuizStringEncoded!) else { return }

        if UIApplication.shared.canOpenURL(whatsAppUrl as URL) {

            if #available(iOS 10.0, *) {
                print(urlQuizStringEncoded!)
                UIApplication.shared.open(whatsAppUrl as URL, options: [:], completionHandler: nil)
            } else {

                UIApplication.shared.openURL(whatsAppUrl as URL)

            }
        }
        else{


            ProjectUtility.AlertWith(self, message: " What's App is Not Available.", Title: "Sorry")
        }

fonctionne bien Mais quand je mets cette URL

("http://www.proprofs.com/quiz-school/story.php?title=pq-find-out-which-ice-age-character-you-are ")

Ensuite, cela ne fonctionne pas, veuillez vérifier Merci.L'aide sera appréciée.

2
Avinash Mishra

Swift 5

Add whatsapp in LSApplicationQuerySchemes(Info.plist)

Code

let urlWhats = "whatsapp://send?text=\("Hello World")"
if let urlString = urlWhats.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) {
      if let whatsappURL = NSURL(string: urlString) {
            if UIApplication.shared.canOpenURL(whatsappURL as URL) {
                 UIApplication.shared.open(whatsappURL as URL)
             } 
             else {
                 print("please install watsapp")
             }
      }
}
1
Barath