You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UIWebView迁移至WKWebView后媒体自动播放代码报错的解决咨询

解决WKWebView替换UIWebView后媒体自动播放的报错问题

嗨,这个坑我迁移项目的时候也踩过!WKWebView确实没有setMediaPlaybackRequiresUserAction:这个UIWebView时代的方法,它把媒体播放的相关配置统一放到了WKWebViewConfiguration对象里,按照下面的方式修改就能解决:

正确实现步骤

  1. 先创建WKWebViewConfiguration实例,配置媒体自动播放规则
  2. 用这个配置初始化WKWebView

具体代码示例:

// 1. 创建并配置WKWebViewConfiguration
WKWebViewConfiguration *webConfig = [[WKWebViewConfiguration alloc] init];
// 设置允许所有媒体自动播放(不需要用户触发)
webConfig.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;

// 2. 使用配置初始化WKWebView
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:webConfig];

关于媒体类型的可选配置

你可以根据需求选择不同的枚举值来控制自动播放的范围:

  • WKAudiovisualMediaTypeNone:允许所有音频和视频自动播放(对应UIWebView的setMediaPlaybackRequiresUserAction:NO)
  • WKAudiovisualMediaTypeAudio:仅音频需要用户手动触发播放,视频可以自动播放
  • WKAudiovisualMediaTypeVideo:仅视频需要用户手动触发播放,音频可以自动播放
  • WKAudiovisualMediaTypeAll:所有媒体都需要用户手动触发(对应UIWebView的setMediaPlaybackRequiresUserAction:YES)

注意事项

⚠️ 要注意的是,WKWebView的configuration属性是只读的,所以必须在初始化WKWebView之前完成配置,初始化之后再修改配置是无效的哦!

内容的提问来源于stack exchange,提问作者salud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:08:31