iOS使用查询(urlscheme)打开YouTube应用程序
有没有一个URL计划,以指定的search查询打开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应用程式。 如果您使用上述url,则会打开Safari浏览器,而不是YouTube应用。
只有三个URLSchemes可用于打开youtube应用程序:
-
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
-
http://www.youtube.com/v/VIDEO_IDENTIFIER
-
youtube://
参考: iPhoneURLScheme
这在iOS 9中工作正常
youtube://www.youtube.com/channel/<channel-id>
如果有支持的YouTube应用程序searchURLscheme,则没有很好的文档logging(可能会很脆弱)。 您可以直接使用以下方式打开YouTube应用
youtube://
你可以使用以下方式播放特定
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
我会直接通过查询列表来解决这个问题,并在webview中显示结果。 理想情况下,您不希望复制YouTube应用程序(毕竟应用程序商店已经有一个应用程序),所以最好find其他路线的特定video标识符。
它可以打开使用vnd.youtube:/// (注意三个斜线设置)
Swift 3和iOS 10+的更新
好的,有两个简单的步骤来实现这一点:
首先,您必须修改Info.plist
以使用LSApplicationQueriesSchemes
列出Youtube
。 简单地打开Info.plist
作为源代码,并粘贴:
<key>LSApplicationQueriesSchemes</key> <array> <string>youtube</string> </array>
之后,您可以通过简单地将https://
replace为youtube://
来打开Youtube应用程序中的任何YouTubeurl。 下面是一个完整的代码,你可以将这个代码链接到任何你有作为一个行动的button:
@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) } }
您可以用这种方式打开YouTube iOS应用程序:
影片
<a href="youtube://dQw4w9WgXcQ">Open in YouTube</a> <a href="youtube://watch?v=dQw4w9WgXcQ">Open in YouTube</a>
用户和渠道
目前不可能。 (来源:广泛的testing。)
播放列表
未知/未经testing
如果您想用search查询打开YouTube iOS应用,请使用以下语法:
youtube:///results?q=search%20query
(用不含引号的search条件replacesearch%20query
)
注意:上面的语法有三个斜杠而不是两个。
(作品20160420)
对于iOS 11,这应该工作:
youtube://www.youtube.com/<channel-id>
根据最新的Apple开发者文档,youtube不能用youtube:// url scheme来打开,而应该像下面的链接中提到的一样。