是否有 URL 方案可以使用指定的搜索查询打开 YouTube iOS 应用程序?
我尝试过:
NSString *stringURL = @"http://www.youtube.com/results?search_query=foo";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
但这将打开 Safari 而不是 YouTube 应用程序。
您不能使用此
http://www.youtube.com/results?search_query=foo
打开 YouTube 应用程序。如果您使用上面的网址,它将打开 safari 而不是 youtube 应用程序。
只有三个 URLSchemes 可用于打开 YouTube 应用程序:
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
http://www.youtube.com/v/VIDEO_IDENTIFIER
youtube://
这在 iOS 9 中运行良好
youtube://www.youtube.com/channel/<channel-id>
针对 Swift 3 和 iOS 10+ 的更新
好的,有两个简单的步骤即可实现此目的:
首先,您必须修改
Info.plist
以将 Youtube
与 LSApplicationQueriesSchemes
一起列出。只需打开 Info.plist
作为源代码,然后粘贴以下内容:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>youtube</string>
</array>
之后,您只需将
https://
替换为 youtube://
,即可打开 Youtube 应用程序内的任何 YouTube URL。这是完整的代码,您可以将此代码链接到您拥有的任何按钮作为操作:
@IBAction func YoutubeAction() {
let YoutubeQuery = "Your Query"
let escapedYoutubeQuery = YoutubeQuery.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
let appURL = NSURL(string: "youtube://www.youtube.com/results?search_query=\(escapedYoutubeQuery!)")!
let webURL = NSURL(string: "https://www.youtube.com/results?search_query=\(escapedYoutubeQuery!)")!
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)
}
}
可以使用
打开它vnd.youtube:///
(注意设置了三个斜杠)
如果存在受支持的 YouTube 应用程序搜索 URL 方案,则该方案没有详细记录(并且可能很脆弱)。您可以直接使用以下方式打开 YouTube 应用程序本身:
youtube://
您可以使用以下方式播放特定视频:
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
我会通过直接查询列表来解决这个问题,或者在网络视图中显示结果。理想情况下,您不想复制 YouTube 应用程序(毕竟应用程序商店中已经有一个),因此最好通过其他途径找到特定的视频标识符。
您可以通过以下方式打开 YouTube iOS 应用程序:
视频
<a href="youtube://dQw4w9WgXcQ">Open in YouTube</a>
<a href="youtube://watch?v=dQw4w9WgXcQ">Open in YouTube</a>
用户和渠道
目前不可能。 (来源:广泛测试。)
播放列表
未知/未经测试
如果您想通过搜索查询打开 YouTube iOS 应用程序,请使用以下语法:
youtube:///results?q=search%20query
(将
search%20query
替换为不带引号的搜索词)
注意:上面的语法有三个斜杠而不是两个。
(截至 20160420)
对于 iOS 11 这应该有效:
youtube://www.youtube.com/<channel-id>
根据最新的 Apple 开发者文档,无法使用 youtube:// url 方案打开 youtube,而应该像下面的链接中提到的那样。
要从网页(Safari 或任何浏览器)打开在应用程序中打开的 Youtube 链接,这也适用于从 javascript 函数打开,您需要向 Youtube 发送正确的表单查询:
<form id='form' action='https://m.youtube.com/watch?v=' method='get'>
<input type='hidden' name='v' id='v' value='XgQrzkvvOO4'>
</form>
这适用于移动网站。对于普通浏览器,请将“'https://m.youtube.com/watch?v=”更改为“'https://youtube.com/watch?v=”
如果您需要链接或按钮,只需将输入类型更改为按钮即可。
编辑:从 IOS 和 YT 的最新更改开始,此方法不再适用于 iphone。仍在寻找一种从脚本打开 Youtube APP 的方法,而不被浏览器询问是或否。
youtube://结果?search_query=
不客气。