【问题标题】:iOS open YouTube App with query (url schemes)iOS 使用查询(网址方案)打开 YouTube 应用
【发布时间】:2013-09-12 18:47:27
【问题描述】:

是否有 URL Scheme 可以使用指定的搜索查询打开 YouTube iOS 应用?

我试过了:

NSString *stringURL = @"http://www.youtube.com/results?search_query=foo";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];

但这将打开 Safari 而不是 YouTube 应用程序。

【问题讨论】:

    标签: ios search youtube


    【解决方案1】:

    您不能使用此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

    【讨论】:

    • 好吧,太糟糕了。我认为会有一种无证的方式。这是一个如此明显的特征。我不明白。然后Safari现在必须这样做。谢谢。
    • 这不适用于我的频道。你能检查一下这两个链接的问题吗?
    • youtube 是不是一个特例,而其他应用程序需要使用正常的 url 方案(即 myappname://)?
    • 我现在在ios10上试过了。只有youtube:// url 方案似乎有效。
    • 我们不能发送多个视频以生成播放列表吗?
    【解决方案2】:

    这在 iOS 9 中运行良好

    youtube://www.youtube.com/channel/<channel-id>

    【讨论】:

    • 在 iOS 9 中,甚至像 youtube.com/watch?v=hVxPJ9heetc 这样的 http 链接也会在 youtube 应用中打开,因为 youtube 已经实现了通用链接。
    • 感谢您的回答!
    • 这已经停止为我工作 IOS 1o,它一直打开移动网站而不是应用程序,我可以在 url 中添加一些东西来强制应用程序吗?
    【解决方案3】:

    Swift 3 和 iOS 10+ 的更新

    好的,有两个简单的步骤可以实现:

    首先,您必须修改Info.plist 以列出YoutubeLSApplicationQueriesSchemes。只需打开 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)
        }
    
    }
    

    【讨论】:

    • iOS 12,对于带有youtube://的任何链接,canOpenURL 返回 false
    【解决方案4】:

    可以用

    打开
    vnd.youtube:///
    

    (注意设置了三个斜线)

    【讨论】:

      【解决方案5】:

      如果存在受支持的 YouTube 应用程序搜索 URL 方案,则说明它没有很好的文档记录(并且可能很脆弱)。您可以直接使用以下方式打开 YouTube 应用程序:

      youtube://
      

      您可以使用以下方式播放特定视频:

      http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
      

      我会通过直接查询列表来解决这个问题,或者在 web 视图中显示结果。理想情况下,您不想复制 YouTube 应用(毕竟应用商店中已经有一个),因此最好通过其他途径找到特定的视频标识符。

      【讨论】:

        【解决方案6】:

        如果您想使用搜索查询打开 YouTube iOS 应用,请使用以下语法:

        youtube:///results?q=search%20query
        

        (将 search%20query 替换为不带引号的搜索词)

        注意:上面的语法是三个斜杠而不是两个。

        (截至 20160420 的作品)

        【讨论】:

          【解决方案7】:

          您可以通过这种方式打开 YouTube iOS 应用:

          视频

          <a href="youtube://dQw4w9WgXcQ">Open in YouTube</a>
          <a href="youtube://watch?v=dQw4w9WgXcQ">Open in YouTube</a>
          

          用户和渠道

          目前不可能。 (来源:广泛的测试。)

          播放列表

          未知/未经测试

          【讨论】:

          • 我能够使用自定义 URL“youtube://www.youtube.com/c/yourcustomname”在应用中打开频道
          【解决方案8】:

          对于 iOS 11,这应该可以:

          youtube://www.youtube.com/<channel-id>
          

          【讨论】:

          • youtube://www.youtube.com/ 不起作用。我需要添加频道:youtube://www.youtube.com/channel/
          【解决方案9】:

          根据最新的 Apple 开发者文档,无法使用 youtube:// url 方案打开 youtube,而应如以下链接所述。

          https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/YouTubeLinks/YouTubeLinks.html

          【讨论】:

            【解决方案10】:

            要从网页(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的方法,而不被浏览器询问是或否。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-03-17
              • 1970-01-01
              • 2015-07-07
              • 1970-01-01
              • 2019-09-20
              • 2014-04-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多