如何在iOS中单击按钮打开带有YouTube ID的YouTube应用程序



我正在构建一个应用程序,其中我将有一个名为Watch VideoUIButton,单击应使用相应的youtube ID打开YouTube应用程序/网络的按钮。

我看到了在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)
    }

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

不要忘记youtube方案添加到Info.plist中的LSApplicationQueriesSchemes(否则canOpenURL将始终失败):

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

旁注:

如果用户之前启用了 Safari 应用程序来打开 Youtube 应用程序,则无需通过youtube://方案,第二个 url 也将打开 Youtube 应用程序。但是,您无法控制它,如果用户拒绝 Safari 打开 Youtube,那么您无论如何都必须直接尝试该方案 - 因此我认为最好将我上面提到的解决方案与两个条件分支一起使用。

实际上,您并不真正需要YouTube计划。如果您知道如何以用户身份在两种不同的行为之间切换,它就会按预期工作!iOS 10让用户选择。如果应用使用 YouTube 网址调用openURL(),系统会使用上次选择的行为。

用户可以通过单击顶部横幅右侧的"打开"来决定使用YouTube应用程序,上面写着"在应用程序中打开"(左右) - 应用程序打开并且iOS会记住此设置。另一方面,如果应用程序自动打开,则状态栏右侧会出现一个小链接(是的,我实际上是指状态栏!)说"youtube.com>"(也带有 V 形)。通过单击该链接,您可以选择将来在 Safari 中打开 YouTube 网址。

换句话说,如果用户选择在 Safari 中打开 YouTube 网址,您将没有机会在 iOS 10 上以编程方式打开 YouTube 应用。

在按钮上点击事件 编写此代码

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=videoId"]];

这将在YouTube应用程序中打开视频(如果存在),或者它将用户带到网站。

在斯威夫特

  UIApplication.sharedApplication().openURL(NSURL(string:"http://www.youtube.com/watch?v=videoId")!)

您可以使用 URLSchemes 来实现此目的。我们需要 youtube app 的 URLSchemeIdentifier 的 URLSchemeIdentifieryoutube:// 。对于默认应用程序,您可以通过在线搜索轻松获取 URLScheme标识符。

现在在按钮操作中使用以下代码打开 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)
    }

注意:请注意,如果您不将URL方案列入白名单,canOpenURL将给出false。例外情况仅适用于常见应用。

最新更新