【问题标题】:Video from an embedded tweet doesn’t play with WKWebView in some circumstances在某些情况下,来自嵌入式推文的视频无法使用 WKWebView 播放
【发布时间】:2022-01-03 15:10:08
【问题描述】:

我遇到了从嵌入式推文到 HTML 推文播放视频的问题。我正在寻找的行为很简单:有可能点击播放按钮来播放视频。但是我的应用程序可以包含来自不同资源的视频,例如Twitter、YouTube 等,我想以相同的方式播放所有视频:点击播放按钮。但是,在某些 WKWebView 配置下,twitter 视频无法播放,但其他视频可以正常播放;在另一种 WKWebView 配置下,twitter 视频可以正常播放,但同时其他视频可以自动播放,这是不正确的行为。

这是我的 WKWebView 配置和 HTML 加载的代码示例:

let configuration = WKWebViewConfiguration()
        configuration.allowsInlineMediaPlayback = true
        // Twitter video doesn't play, other videos can play by tap action
        configuration.mediaTypesRequiringUserActionForPlayback = .all
        
        // Twitter video doesn't play, other videos can play by tap action
//        configuration.mediaTypesRequiringUserActionForPlayback = .video
        
        // Twitter video plays correctly by tap action, but other videos can play automatically which is not correct behaviour for me
//        configuration.mediaTypesRequiringUserActionForPlayback = .audio
        
        // Twitter video plays correctly by tap action, but other videos can play automatically which is not correct behaviour for me
//        configuration.mediaTypesRequiringUserActionForPlayback = []
        
        let html = """
        <html>
           <body>
              <blockquote class="twitter-tweet">
                 <p lang="en" dir="ltr">Jamie Carragher meets James Bond ????<br><br>Daniel Craig discusses his love of Liverpool, the thrill he felt meeting the players in person, his final appearance as James Bond, and whether Jurgen Klopp would make a good 007 ????⚽<a href="<some_link>">pic.twitter.com/kxYrAO3LIh</a></p>
                 &mdash; Sky Sports News (@SkySportsNews) <a href="https://twitter.com/SkySportsNews/status/1444597028286259203?ref_src=twsrc%5Etfw">October 3, 2021</a>
              </blockquote>
              <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
           </body>
        </html>
        """

        let webView = WKWebView(frame: .zero, configuration: configuration)
        webView.loadHTMLString(html, baseURL: nil)

谢谢!

【问题讨论】:

    标签: ios video twitter


    【解决方案1】:

    这很奇怪,我遇到了类似的问题,解决方案是根据视频类型为 Twitter 视频更改 WKWebViewConfiguration 的属性 mediaTypesRequiringUserActionForPlayback 的值:

    configuration.mediaTypesRequiringUserActionForPlayback = .none 
    

    或者只是不设置属性,而对于其他视频类型:

    configuration.mediaTypesRequiringUserActionForPlayback = .all 
    

    类似于(算法):

    if video.type != TwitterType {
        configuration.mediaTypesRequiringUserActionForPlayback = .all 
    }
    

    问候!

    【讨论】:

    • 感谢您的建议!不幸的是,这对我不起作用,因为不同的视频类型可以出现在同一页面上
    • 嗯,我明白了,拜托了,如果您找到其他解决方案,请在此处与社区分享,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多