如何在点击按钮时使用 YouTube ID 打开 YouTube 应用 iOS
How to Open YouTube app with YouTube id on a button click in iOS
我正在构建一个应用程序,其中我将有一个名为 Watch Video
的 UIButton
单击按钮,YouTube app/web 应该使用相应的 youtube ID 打开。
我在 iOS 中看到了嵌入 YouTube 视频的代码,但我没有找到任何此类内容。任何想法都会很有帮助。
这样您首先检查设备上是否安装了 YouTube 应用程序,然后打开该应用程序或转到 Safari。
let youtubeId = "SxTYjptEzZs"
var youtubeUrl = NSURL(string:"youtube://\(youtubeId)")!
if UIApplication.sharedApplication().canOpenURL(youtubeUrl){
UIApplication.sharedApplication().openURL(youtubeUrl)
} else{
youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=\(youtubeId)")!
UIApplication.sharedApplication().openURL(youtubeUrl)
}
在按钮点击事件中编写此代码
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=videoId"]];
这将在 youtube 应用程序中打开视频(如果存在),否则会将用户带到网站。
在swift
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.youtube.com/watch?v=videoId")!)
其实,你真的不需要youtube方案。如果您知道如何作为用户在两种不同的行为之间切换,它会按预期工作! iOS 10 让用户选择。如果某个应用通过 YouTube URL 调用 openURL()
,系统将使用最后选择的行为。
用户可以通过单击顶部横幅右侧的 "Open" 来决定使用 YouTube 应用程序,上面写着 "Open in app"(左右)- 应用程序打开并且 iOS 记住了这个环境。
另一方面,如果应用程序自动打开,状态栏右侧会出现一个小 link(是的,我实际上是指状态栏!)说 "youtube.com >"(也有那个 V 形).通过单击 link,您选择以后在 Safari 中打开 YouTube URL。
换句话说,如果用户选择在 Safari 中打开 YouTube URL,您将无法在 iOS 10 上以编程方式打开 YouTube 应用程序。
您可以使用 URL方案 来达到这个目的。我们需要 youtube 应用的 URLSchemeIdentifier。 URLyoutube 的 SchemeIdentifier 是 youtube://
。对于默认应用程序,您可以通过在线搜索轻松获得 URLSchemeIdentifiers。
现在在按钮操作中使用以下代码打开 youtube 应用程序。
let url = NSURL(string:"youtube://AnyParameterYouWant")!
if UIApplication.sharedApplication().canOpenURL(url){
UIApplication.sharedApplication().openURL(url)
} else{
youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=ID")!
UIApplication.sharedApplication().openURL(url)
}
注意: 请注意 canOpenURL 如果您不将 URL 方案。例外仅适用于常见应用。
Swift 4 更新(移除强制展开):
func playInYoutube(youtubeId: String) {
if let youtubeURL = URL(string: "youtube://\(youtubeId)"),
UIApplication.shared.canOpenURL(youtubeURL) {
// redirect to app
UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
} else if let youtubeURL = URL(string: "https://www.youtube.com/watch?v=\(youtubeId)") {
// redirect through safari
UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
}
}
不要忘记在Info.plist
中为LSApplicationQueriesSchemes
添加youtube
方案(否则canOpenURL
总是失败):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>youtube</string>
</array>
旁注:
如果用户之前启用了Safari应用打开Youtube应用,则不需要通过youtube://
方案和第二个 url 也将打开 Youtube 应用程序。但是,你无法控制它,如果用户拒绝 Safari 打开 Youtube,那么你将不得不直接尝试该方案 - 因此我相信最好将我上面提到的解决方案与两个条件分支一起使用。
我正在构建一个应用程序,其中我将有一个名为 Watch Video
的 UIButton
单击按钮,YouTube app/web 应该使用相应的 youtube ID 打开。
我在 iOS 中看到了嵌入 YouTube 视频的代码,但我没有找到任何此类内容。任何想法都会很有帮助。
这样您首先检查设备上是否安装了 YouTube 应用程序,然后打开该应用程序或转到 Safari。
let youtubeId = "SxTYjptEzZs"
var youtubeUrl = NSURL(string:"youtube://\(youtubeId)")!
if UIApplication.sharedApplication().canOpenURL(youtubeUrl){
UIApplication.sharedApplication().openURL(youtubeUrl)
} else{
youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=\(youtubeId)")!
UIApplication.sharedApplication().openURL(youtubeUrl)
}
在按钮点击事件中编写此代码
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=videoId"]];
这将在 youtube 应用程序中打开视频(如果存在),否则会将用户带到网站。
在swift
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.youtube.com/watch?v=videoId")!)
其实,你真的不需要youtube方案。如果您知道如何作为用户在两种不同的行为之间切换,它会按预期工作! iOS 10 让用户选择。如果某个应用通过 YouTube URL 调用 openURL()
,系统将使用最后选择的行为。
用户可以通过单击顶部横幅右侧的 "Open" 来决定使用 YouTube 应用程序,上面写着 "Open in app"(左右)- 应用程序打开并且 iOS 记住了这个环境。 另一方面,如果应用程序自动打开,状态栏右侧会出现一个小 link(是的,我实际上是指状态栏!)说 "youtube.com >"(也有那个 V 形).通过单击 link,您选择以后在 Safari 中打开 YouTube URL。
换句话说,如果用户选择在 Safari 中打开 YouTube URL,您将无法在 iOS 10 上以编程方式打开 YouTube 应用程序。
您可以使用 URL方案 来达到这个目的。我们需要 youtube 应用的 URLSchemeIdentifier。 URLyoutube 的 SchemeIdentifier 是 youtube://
。对于默认应用程序,您可以通过在线搜索轻松获得 URLSchemeIdentifiers。
现在在按钮操作中使用以下代码打开 youtube 应用程序。
let url = NSURL(string:"youtube://AnyParameterYouWant")!
if UIApplication.sharedApplication().canOpenURL(url){
UIApplication.sharedApplication().openURL(url)
} else{
youtubeUrl = NSURL(string:"https://www.youtube.com/watch?v=ID")!
UIApplication.sharedApplication().openURL(url)
}
注意: 请注意 canOpenURL 如果您不将 URL 方案。例外仅适用于常见应用。
Swift 4 更新(移除强制展开):
func playInYoutube(youtubeId: String) {
if let youtubeURL = URL(string: "youtube://\(youtubeId)"),
UIApplication.shared.canOpenURL(youtubeURL) {
// redirect to app
UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
} else if let youtubeURL = URL(string: "https://www.youtube.com/watch?v=\(youtubeId)") {
// redirect through safari
UIApplication.shared.open(youtubeURL, options: [:], completionHandler: nil)
}
}
不要忘记在Info.plist
中为LSApplicationQueriesSchemes
添加youtube
方案(否则canOpenURL
总是失败):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>youtube</string>
</array>
旁注:
如果用户之前启用了Safari应用打开Youtube应用,则不需要通过youtube://
方案和第二个 url 也将打开 Youtube 应用程序。但是,你无法控制它,如果用户拒绝 Safari 打开 Youtube,那么你将不得不直接尝试该方案 - 因此我相信最好将我上面提到的解决方案与两个条件分支一起使用。