昨天找测试校对的过程中,有一个他提倡进行优化的问题。就是在 Safari 浏览器下打开应用会提示授权设备的弹窗三次(第一次是摄像头+麦克风,第二次麦克风,第三次摄像头),我看了下对应的代码逻辑,由于有一个轮询检测设备授权情况更改的函数,所以首次执行轮询必然会出现三次授权弹窗,考虑到曾经有需求得实时监测,这个问题还是暂不处理了。
继续回到昨天那个 Safari 摄像头画面黑屏的问题,我原先想在 MacOS 上测试的(只要是 Safari,都可以复现),发现控制台一直报错,搜到了 StackOverFlow 的一个问题 后切换到了 iOS 端测试就没问题了(MacOS 端没有这个设置项)。
WebSocket network error: OSStatus Error -9807: Invalid certificate chain
结合 setInterval
打了多次反复输出,发现该媒体源对象的 enable
属性和 Safari 的“停止使用摄像头”毫无关联,怎么操作都没有任何变化,这就挺麻烦了。如果一定要按这个需求改,那就只能检测画面是不是全黑了,性价比太低,又是一个没有必要继续解决的问题==
去看了下隔壁的飞书和腾讯会议,无一例外全部不给在 Safari 里用,后者更是只能强制客户端使用。估计他们也是在 Safari 踩了不少坑才这样搞的吧,哈哈哈。