当前位置: 首页 > news >正文

Android 11 webview webrtc无法使用问题

问题:Android 11 webview 调用webrtc无法使用, 看logcat日志会报如下错误

[ERROR:address_tracker_linux.cc(245)] Could not send NETLINK request: Permission denied (13)

查了下相关的网络权限都有配置了还是不行,还是报这个权限问题

原因:跟 android11 限制读网卡信息有关系, 算webview的一个兼容bug 

https://developer.android.com/about/versions/11/privacy/mac-address

解决: 

方案一: 可以修改app 的targetSdkVersion小于30 

方案二:发现第一次发起连接失败后再连接就正常了,所以在正式连接之前发起一次连接

async function connect() {if (getAndroidVersion() === 11) {await this.fixAndroid({iceServers,iceCandidatePoolSize: 1, //  这里要设置1, 不设1也连不上,不知道为什么})}// 发起正式连接// let peer = new RTCPeerConnection(turn);// ......}function getAndroidVersion() {// 获取设备信息const deviceInfo = navigator.userAgent;// 解析设备信息const androidVersion = deviceInfo.match(/Android ([\d.]+)/);if (androidVersion && androidVersion!.length === 2) {return Number(androidVersion![1])}// 返回系统版本号return null;
};async fixAndroid(turn: any) {console.log("fixing android webrtc bug");return new Promise(async (resolve, reject) => {try {let peer = new RTCPeerConnection(turn);let offer = await peer.createOffer({offerToReceiveAudio: true,offerToReceiveVideo: true})let rtcDesc = new RTCSessionDescription(offer);await peer.setLocalDescription(rtcDesc);setTimeout(()=> {peer.close()console.log("fixAndroid close")resolve()}, 1000)} catch (e) {resolve()console.error("fixAndroid", e)}})}

参考:

  • https://stackoverflow.com/questions/70803796/ice-candidates-not-generating-on-android-11-chrome-in-some-devices
  • https://issues.chromium.org/issues/40194180

http://www.lryc.cn/news/297287.html

相关文章:

  • 嵌入式单片机中晶振的工作原理
  • AWS配置内网EC2服务器上网【图形化配置】
  • Android中的MVVM
  • 制作耳机壳的UV树脂和塑料材质相比劣势有哪些?
  • CSP-202012-1-期末预测之安全指数
  • Doris中的本地routineload环境,用于开发回归测试用例
  • 【开源项目阅读】Java爬虫抓取豆瓣图书信息
  • 基于opencv-python模板匹配的银行卡号识别(附源码)
  • JAVA设计模式之建造者模式详解
  • ElasticSearch查询语句用法
  • 美国服务器如何
  • 远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件
  • 【python基础】sys.argv[]的使用方法
  • Element-Ui el-date-picker日期传值异常问题解决办法
  • GO语言集成开发 JetBrains GoLand 2023 中文
  • 详细关于如何解决mfc140.dll丢失的步骤,有效修复mfc140.dll文件丢失的问题。
  • 聚簇索引、非聚簇索引、回表、索引下推、覆盖索引
  • ES实战-book笔记1
  • 高防服务器出租的优势及特点
  • NTLM||LM算法lsasswinlogon进程
  • transformer剪枝论文汇总
  • 使用 Ant Design 的 Upload 组件实现图片
  • 【知识图谱--第二讲知识图谱的表示】
  • C语言---计算n的阶乘
  • 材料非线性Matlab有限元编程:初应力法与初应变法
  • QT+OSG/osgEarth编译之八十二:osgdb_obj+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_obj)
  • [office] excel求乘积的公式和方法 #媒体#笔记#经验分享
  • OpenEuler20.03LTS SP2 上安装 OpenGauss3.0.0 单机部署过程(二)
  • 从零开始手写mmo游戏从框架到爆炸(十)— 集成springboot-jpa与用户表
  • Python算法题集_两两交换链表中的节点