2014-11-17 3 views
5

ho WebView la visualizzazione di video su YouTube:Avviare YouTube App nel dispositivo iOS

class ViewController: UIViewController { 

@IBOutlet var webView: UIWebView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let url = NSURL(string: "http://www.cast.html") 
    let request = NSURLRequest(URL: url!) 

    webView.loadRequest(request) 
} 

link HTML simile a questo:

<div class="h_iframe"> 
<iframe webkit-playsinline height="480" width="2" src="https://www.youtube.com/embed/ru1_lI84Wkw?feature=player_detailpage&playsinline=1" frameborder="0" allowfullscreen></iframe></div> 

che funziona perfettamente, ma voglio anche per permettere all'utente di guardarlo sull'app youtube. È possibile creare un collegamento in webview che avvia l'app YouTube (se installata sul dispositivo)?

Qualsiasi aiuto apprezzato.

+0

possibile duplicato del [iOS aperta YouTube App con query (schemi URL)] (http://stackoverflow.com/ domande/18695537/ios-open-youtube-app-with-query-url-scheme) –

risposta

8

È possibile utilizzare questo:

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

dove XXXXXX è il codice del video in youtube.

+0

Grazie per l'aiuto! – Jay

12

Dal momento che YouTube non è preinstallato sul telefono, è una buona idea salvaguardarlo testando l'URL, quindi tornando a utilizzare Safari se non è installato su YouTube.

aggiungere questa chiave al tuo info.plist

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

Allora questo è il codice che fallback a Safari se l'app YouTube non è installato.

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) 
+2

Per quanto riguarda iOS 9, è necessario anche il 'LSApplicationQueriesSchemes' impostato in' info.plist' in un array contenente 'youtube' http://stackoverflow.com/questions/40119595/canopenurl-not-working-in-ios- 10 –

0

Swift 3

UIApplication.shared.openURL(URL(string: "http://youtube.com")!)

se app YouTube non è installato, si apre Safari (pagina web)

+0

Non funziona. Apre sempre Safari. –

+0

@TeodorCiuraru apre l'app YouTube quando installata; lo sto utilizzando in un'app di produzione che mostra trailer per film o serie. Sto usando iOS 10.2. –

+0

Ci deve essere un'altra impostazione configurata. Lo sto usando nella stessa configurazione e si apre solo su Safari. –

2

Aggiornamento per Swift 3 e iOS 10+

OK, ci sono due semplici passaggi per ottenere questo:

Innanzitutto, è necessario modificare Info.plist nell'elenco Youtube con LSApplicationQueriesSchemes. Basta aprire Info.plist come codice sorgente, e incollare questo:

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

Dopo di che, è possibile aprire qualsiasi URL di YouTube all'interno dell'applicazione Youtube semplicemente sostituendo https:// con youtube://. Ecco un codice completo, è possibile collegare il codice a qualsiasi pulsante si dispone come un azione:

@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) 
    } 

}