2014-11-17 2 views
5

У меня есть Webview отображающее видео Youtube:Запуск YouTube App в 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) 
} 

HTML ссылка выглядит следующим образом:

<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> 

Это прекрасно работает, но я хочу также, чтобы позволить пользователю смотреть в приложении YouTube. Возможно ли создать ссылку в webview, которая запускает приложение YouTube (если оно установлено на устройстве)?

Любая помощь приветствуется.

+0

возможно дубликат [IOS открытой YouTube App с запросом (схем URL)] (http://stackoverflow.com/ вопросы/18695537/ios-open-youtube-app-with-query-url-схемы) –

ответ

8

Вы можете использовать это:

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

где XXXXXX является код видео в YouTube.

+0

Спасибо за помощь! – Jay

12

Поскольку Youtube не предварительно установлен на телефоне, рекомендуется защитить его, протестировав URL-адрес, а затем вернуться к использованию сафари, если у вас нет установленной youtube.

Добавить этот ключ к вашему info.plist

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

Тогда это код, который будет Откат к сафари, если приложение Youtube не установлен.

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

Что касается iOS 9, вам также нужно установить 'LSApplicationQueriesSchemes' в' info.plist' массив, содержащий 'youtube' http://stackoverflow.com/questions/40119595/canopenurl-not-working-in-ios- 10 –

0

Swift 3

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

если приложение YouTube не установлен, он открывает Safari (веб-страницы)

+0

Это не работает. Всегда открывает Safari. –

+0

@TeodorCiuraru открывает приложение YouTube при установке; Я использую его в производственном приложении, которое показывает трейлеры для фильмов или сериалов. Я использую iOS 10.2. –

+0

Должна быть настроена другая настройка. Я использую его в той же конфигурации и всплывает только Safari. –

2

Обновление для Swift 3 и прошивкой 10+

ОК, для этого есть два простых шага:

Во-первых, вы должны изменить Info.plist в список Youtube с LSApplicationQueriesSchemes. Просто откройте Info.plist как исходный код, и вставьте:

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

После этого, вы можете открыть любой URL Youtube внутри приложения Youtube, просто заменяя https:// с youtube://. Вот полный код, вы можете связать этот код на любую кнопку, как Действие:

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

} 
Смежные вопросы