最新的iOS更新(12.2)后,本地存储中的视频无法在WebView(Xamarin.Forms)中播放

时间:2019-04-10 15:06:05

标签: ios xamarin video xamarin.forms webview

我有一个适用于Android和iOS的Xamarin Forms应用程序,该应用程序显示了WebView中本地存储中的一些HTML内容(目的是在脱机时查看此内容)。

在最新的iOS更新(12.2)之后,该HTML中的视频停止工作。 视频的位置显示白色背景,并带有符号“播放”,但无法执行任何操作。

The problem

我尝试将视频标签更改为包括自动播放,静音,但没有成功。

<video width="560" height="315" controls>
<source src="Absolute-3D.mp4" type="video/mp4">
</video>

我希望它可以像更新前一样继续工作,但是有一些东西阻止了它。

5 个答案:

答案 0 :(得分:1)

尝试将Web视图的mediaPlaybackRequiresUserAction设置为NO。我在iOS 12.2中看到了相同的问题(UIWebViewWKWebView)。在iOS 12.1和更早版本中可以正常工作。

调试时,您会在safari控制台中看到此错误:

  

未处理的承诺拒绝:NotAllowedError:请求不是   在当前上下文中由用户代理或平台允许,   可能是因为用户拒绝了权限

https://developer.apple.com/documentation/uikit/uiwebview/1617954-mediaplaybackrequiresuseraction?language=objc

https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/1614727-mediaplaybackrequiresuseraction?language=objc

答案 1 :(得分:1)

这是一个UIWebView错误,我添加了以下代码,现在可以使用。

self.webView.mediaPlaybackRequiresUserAction = NO;
self.webView.allowsPictureInPictureMediaPlayback = YES;

答案 2 :(得分:0)

我用WKWebView替换了UIWebView(现已弃用),它似乎可以再次运行而无需更改html代码中的任何内容。

控制台中有一条消息,指出在当前上下文中未授权全屏。对我来说,它也只会在真实设备上发生。

答案 3 :(得分:0)

未处理的承诺拒绝:NotAllowedError:在当前上下文中,用户代理或平台不允许该请求,可能是因为用户拒绝了许可。 尚未解决。

答案 4 :(得分:0)

您需要将此添加到您的plist

NSIncludesSubdomainsNSTemporaryExceptionAllowsInsecureHTTPLoads

赞:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSIncludesSubdomains</key>
    <true/>
    <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
    <true/>
</dict>