allowsInlineMediaPlayback
允许在网页内部播放视频,设置这个属性为YES;如果使用原生的全屏控制器播放视频的话, 就设置这个属性为NO。这个属性在iPhone上默认为NO, 在iPad上默认为YES。
Ios12之前系统,此方法设为yes也会调用系统播放器。
mediaPlaybackRequiresUserAction
这个属性是替代requiresUserActionForMediaPlayback这个属性的。
当mediaPlaybackRequiresUserAction这个属性设置为NO的时候,就是自动播放,不需要用户采取任何手势开启播放。
但是以上两个API都过期了,现在有另外一个属性mediaTypesRequiringUserActionForPlayback,枚举值包括4个:
WKAudiovisualMediaTypeNone = 0,
WKAudiovisualMediaTypeAudio = 1 << 0,
WKAudiovisualMediaTypeVideo = 1 << 1,
WKAudiovisualMediaTypeAll = NSUIntegerMax
iOS12.2升级后,UIWebView加载的H5页面会出现一个Bug,就是通过JS调用或者标签设置自动播放视频的功能无法使用,JS调用播放视频方法还会报错:“Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context,possibly because the user denied permission.”。
经过测试发现,iOS升级到12.2后,如需在UIWebView中自动播放视频、或者想通过JS调用方法的方式播放视频,必须将UIWebView中的“mediaPlaybackRequiresUserAction”设置为NO;这个属性的意思就是:是否需要用户操作才能播放视频,默认为YES。
总结:iOS12.2之前的系统版本无此问题,WKWebView在各个兼容WKWebView的系统中也无此问题,说明在iOS12.2中把UIWebView的这个属性做了加强;
网友评论