最近在app中有一个h5界面,是一个视频播放的列表,然后在iOS12的手机上发生了如下几个问题:
第一,自动全屏播放,这个问题历来就有,很好解决;
第二,全屏后取消全屏,状态栏消失;
第三,多个视频间来回点全屏按钮导致app崩溃闪退;
以上三个问题,我们下面一一来说明:
1.自动全屏播放,历来如此,想要解决也很简单:
同时在app中对webview设置一个属性:
这样,视频在开始播放的时候就不会自动全屏了。
2.全屏后退出全屏,状态栏消失
这个问题在iOS12以下的手机中都不存在,推测应该也是iOS12 做出的新改变或者bug,解决办法在webview所在的ViewCOntroller中调用下面的方法:
调用的时候最好这么写:
调用方法可以写在viewDidLoad中。
3.切换点击几个视频的全屏按钮导致崩溃
这是我们要着重说的一个问题,经试验,iOS12以下手机不会崩溃,很明显,这是一个iOS12的bug,目前无法处理,想了几个方案:
i)不允许多个视频处于播放暂停状态,退出全屏后,恢复初始状态,但是需要h5去监听这个状态来做处理,不知道h5能不能兼听到,如果监听不到,就用上面iOS的兼听通过JS告诉h5来做处理;
ii)禁止全屏,并在播放期间隐藏全屏按钮,音量按钮,进度条,暂定播放这些按钮。前提是你的视频不需要全屏显示处理方法是 video 元素上不能写 controls 特性。
如果你有更好的方法来解决这个崩溃问题,欢迎一起探讨。
更新:发现使用WKWebView的时候不会崩溃。