How to open WhatsApp from Swift app?

前端 未结 5 1653
无人共我
无人共我 2021-02-03 15:51

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

相关标签:
5条回答
  • 2021-02-03 16:05
    UIApplication.shared.openURL(URL(string:"https://api.whatsapp.com/send?phone=phoneNumber")!)
    

    phoneNumber might be with (+) or not.

    phoneNumber looks like 99455555555 or +99455555555

    0 讨论(0)
  • 2021-02-03 16:09

    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)
    }
    
    0 讨论(0)
  • 2021-02-03 16:09

    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.

    0 讨论(0)
  • 2021-02-03 16:21

    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
            }
        }
    } 
    
    0 讨论(0)
  • 2021-02-03 16:21

    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)
    
    0 讨论(0)
提交回复
热议问题