I am using webview
for my Swift app and I have \"Share on WhatsApp\" button on my website which works fine on a browser. But on iPhone app, when I click on the butt
UIApplication.shared.openURL(URL(string:"https://api.whatsapp.com/send?phone=phoneNumber")!)
phoneNumber might be with (+) or not.
phoneNumber looks like 99455555555 or +99455555555
I know this is an old question, but the following worked for me (I'm using xcode 8.3.3 and swift 3).
I added whatsapp query scheme inside Info.plist.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
</array>
Info.plist
After adding it, the following works:
let urlString = "whatsapp://send?text=Message to share"
let urlStringEncoded = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let URL = NSURL(string: urlStringEncoded!)
if UIApplication.shared.canOpenURL(URL! as URL) {
UIApplication.shared.openURL(URL! as URL)
}
For Swift 4.2+ and iOS 9+
Method 1: (launches WhatsApp application if is installed)
let phoneNumber = "+989160000000" // you need to change this number
let appURL = URL(string: "https://api.whatsapp.com/send?phone=\(phoneNumber)")!
if UIApplication.shared.canOpenURL(appURL) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(appURL, options: [:], completionHandler: nil)
}
else {
UIApplication.shared.openURL(appURL)
}
} else {
// WhatsApp is not installed
}
Method 2:(open WhatsApp short-link web page using safari)
let phoneNumber = "+989160000000" // you need to change this number
let appURL = URL(string: "https://wa.me/\(phoneNumber)")!
if UIApplication.shared.canOpenURL(appURL) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(appURL, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(appURL)
}
}
Method 3: if WhatsApp is installed launch app, otherwise open short-link in safari.(combine method 1 and 2)
Note : '+' in phone number is OK.
For this you should use URL schemes.
let message = "Message"
let urlWhats = "whatsapp://send?text=\(message)"
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, options: [:], completionHandler: { (Bool) in
})
} else {
// Handle a problem
}
}
}
Here is a simple answer I use in a switch structure. This loads whatsApp. I am still looking for a way to call a specific contact.
case "whatsApp":
let usefullWhere: String = "whatsapp://?app"//
let url = NSURL(string: usefullWhere)!
UIApplication.sharedApplication().openURL(url)