6

我正在构建一个应用程序,我将在单击按钮时UIButton命名Watch Video,应使用相应的 youtube ID 打开 YouTube 应用程序/网络。

我看到了在 iOS 中嵌入 YouTube 视频的代码,但我没有找到任何类似的东西。任何想法都会非常有帮助。

4

5 回答 5

10

这样,您首先检查设备上是否安装了 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)
    }
于 2017-01-09T06:58:04.030 回答
10

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方案添加到LSApplicationQueriesSchemesin Info.plist(否则canOpenURL将始终失败):

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

边注:

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

于 2018-01-25T09:52:46.133 回答
2

实际上,您并不真的需要 youtube 方案。如果您知道如何作为用户在两种不同的行为之间切换,它会按预期工作!iOS 10 让用户自己选择。如果应用openURL()使用 YouTube URL 调用,系统将使用最后选择的行为。

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

换句话说,如果用户选择在 Safari 中打开 YouTube URL,您将无法在 iOS 10 上以编程方式打开 YouTube 应用。

于 2017-07-26T18:10:28.307 回答
1

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

[[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")!)
于 2017-01-09T07:01:10.630 回答
1

您可以为此目的使用URLSchemes 。我们需要youtube 应用程序的URLSchemeIdentifier。youtube 的 URLSchemeIdentifier 是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)
    }

注意:请注意,如果您不将 URL 方案列入白名单, canOpenURL将返回 false。例外仅适用于常见应用程序。

于 2017-07-26T18:20:31.480 回答