各大厂商在媒体播放这块一般管控都比较严格,所以经常会出现一些非常规的行为,比如 iOS 唤出全屏,比如自动播放,比如画中画(PiP) 无法唤起等问题。
在 iOS 中,我们各个 App 引入的 Webview 容器都是官方推荐的 WKWebView ,我们需要它来加载我们的网页,从而完成部分功能。但是处于安全隐私的考虑,它默认的一些属性是并不开启的。其中我们比较关注的视频播放有这么几项:
- applicationNameForUserAgent 用于设置 WebView user agent
- allowsInlineMediaPlayback 是使用h5的视频播放器在线播放, 还是使用原生播放器全屏播放
- mediaTypesRequiringUserActionForPlayback 允许哪些媒体格式需要用户手动触发播放
- allowsAirPlayForMediaPlayback 是否允许 Apple 的 Airplay
- allowsPictureInPictureMediaPlayback 是否允许 画中画模式(PiP)
在 Swift 中,我们可以简单的初始化一个 webview
struct WebView: UIViewRepresentable {
let request: URLRequest
var config = WKWebViewConfiguration()
func makeUIView(context: Context) -> WKWebView {
// edit your config
config.applicationNameForUserAgent = "Mozi