Launch YouTube App in iOS device

Update for Swift 3 and iOS 10+

OK, there are two easy steps to achieve this:

First, you have to modify Info.plist to list Youtube with LSApplicationQueriesSchemes. Simply open Info.plist as a Source Code, and paste this:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>youtube</string>
</array>

After that, you can open any Youtube URL inside Youtube application by simply substituting https:// with youtube://. Here is a complete code, you can link this code to any button you have as an Action:

@IBAction func YoutubeAction() {

    let YoutubeID =  "Ktync4j_nmA" // Your Youtube ID here
    let appURL = NSURL(string: "youtube://www.youtube.com/watch?v=\(YoutubeID)")!
    let webURL = NSURL(string: "https://www.youtube.com/watch?v=\(YoutubeID)")!
    let application = UIApplication.shared

    if application.canOpenURL(appURL as URL) {
        application.open(appURL as URL)
    } else {
        // if Youtube app is not installed, open URL inside Safari
        application.open(webURL as URL)
    }

}

You can use this:

UIApplication.sharedApplication().openURL("youtube://XXXXXX")

where XXXXXX is the code of the video in youtube.


Since Youtube isn't pre-installed on the phone, it's a good idea to safeguard this by testing the URL then falling back to using safari if they don't have youtube installed.

Add this key to your info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>youtube</string>
</array>

Then this is the code that will fallback to safari if the Youtube app isn't installed.

    let youtubeId = "vklj235nlw"
    var url = URL(string:"youtube://\(youtubeId)")!
    if !UIApplication.shared.canOpenURL(url)  {
        url = URL(string:"http://www.youtube.com/watch?v=\(youtubeId)")!
    }
    UIApplication.shared.open(url, options: [:], completionHandler: nil)

Tags:

Ios

Youtube

Swift