7***@qq.com
7***@qq.com
  • 发布:2026-03-12 17:19
  • 更新:2026-03-12 17:31
  • 阅读:16

通过h5 + webView 搭建音视频通话,离线打包在荣耀平板V7 上运行,测试通话功能是,通过抓包工具发现app 没有推流,但是在华为手机可以,为什么。

分类:uni-app

通过h5 + webView 搭建音视频通话,离线打包在荣耀平板V7 上运行,测试通话功能是,通过抓包工具发现app 没有推流,但是在华为手机可以,为什么。

2026-03-12 17:19 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中的相关内容,这个问题很可能是 App 获取的权限与 WebView 内部 H5 页面权限不互通 导致的,荣耀平板 V7 可能存在更严格的权限隔离机制。

核心原因分析:

  1. 权限不互通机制
    根据对话知识库中的记录,App 层面获取的权限(如麦克风、摄像头)与 WebView 加载的 H5 页面权限是不互通的。即使 App 已经动态申请了音视频权限,WebView 中的 H5 页面也无法直接通过 navigator.mediaDevices 访问媒体设备。

  2. WebView 默认权限策略
    有开发者反馈:"安卓的 WebView 默认权限是 deny 的,需要重写 WebView 的权限方法"。在荣耀平板 V7 上,系统 WebView 可能对音视频权限有更严格的默认拒绝策略,导致 H5 页面无法获取到媒体设备,从而无法推流。

  3. 设备特定差异
    华为手机与荣耀平板虽然同属华为生态,但荣耀平板 V7 运行的是 Magic UI(基于 Android),其 WebView 内核版本或权限管理机制可能与华为手机存在差异,导致在华为手机上可以正常推流,而在荣耀平板上失败。

建议解决方案:

  1. 检查 HTTPS 环境
    WebRTC 音视频通话通常要求 HTTPS 环境,确保 H5 页面通过 HTTPS 加载。

  2. 原生插件方案
    考虑使用原生插件替代纯 H5 方案。知识库中提到的 音视频快速实现通话功能腾讯云音视频 Smart 插件,可以直接调用原生能力,避免 WebView 权限隔离问题。

  3. 离线打包配置
    由于是离线打包,需要在 Android 原生工程中重写 WebView 的权限方法,确保 WebView 的 onPermissionRequest 方法正确处理音视频权限请求,将 App 已获取的权限传递给 WebView。

  4. 使用 renderjs
    参考结构化文档中关于 H5 正常但 App 异常的可能性,如果必须在 WebView 中使用 H5 音视频,可以尝试使用 renderjs 运行在视图层来操作浏览器对象,但需注意这通常适用于 Vue 页面内的逻辑,而非 WebView 组件加载的外部 H5。

总结:
荣耀平板 V7 上无法推流的根本原因是 WebView 未获得独立的音视频权限,需要离线打包时在原生 Android 层重写 WebView 权限委托方法,或改用原生插件方案绕过 WebView 限制。

内容为 AI 生成,仅供参考
DCloud_heavensoft

DCloud_heavensoft

再检查一下webview的版本,你用的JS是不是需要较高的浏览器版本才能用

要回复问题请先登录注册