iOS 11 Safari相机权限留存问题及iOS版Chrome WebRTC支持时间咨询
嘿,这两个问题我刚好熟悉,给你详细拆解下:
一、如何让网站留存相机权限
其实现代浏览器(包括Chrome)本身就支持留存相机权限选择,但得满足几个关键条件:
- 你的网站必须是HTTPS协议:HTTP环境下浏览器受安全限制,不会保存任何权限设置,每次调用相机都会弹窗请求,这是浏览器的安全规范,没法绕过。
- 用户第一次选择「允许」后,浏览器会自动记住这个权限:之后再调用
getUserMedia()请求相机时,就不会再弹出权限框了。但如果用户之前选了「拒绝」,或者手动清除了该网站的权限/数据,就会重新触发请求。 - 如果是PWA(添加到主屏幕的Web App):在安卓Chrome上权限留存的稳定性会更高,体验和原生APP更接近。
- 代码层面可以提前检查权限状态:用Permissions API先查询当前相机权限状态,避免不必要的请求弹窗。示例代码:
navigator.permissions.query({ name: 'camera' }) .then(permissionStatus => { console.log('当前相机权限状态:', permissionStatus.state); // state可能是'granted'(已允许)、'denied'(已拒绝)、'prompt'(未选择) if (permissionStatus.state === 'granted') { // 直接调用相机 initCamera(); } else if (permissionStatus.state === 'prompt') { // 发起权限请求 requestCameraPermission(); } else { // 提示用户去设置里开启权限 alert('请在浏览器设置中允许相机权限'); } });
二、iOS版Chrome的WebRTC支持情况
现在iOS版Chrome已经全面支持WebRTC了!因为iOS上所有第三方浏览器(包括Chrome、Firefox等)都必须使用苹果的WebKit内核,而苹果早在iOS 11版本就给WebKit添加了WebRTC支持。所以只要你的iOS系统版本在11及以上,并且Chrome是最新版本,就可以正常调用相机/麦克风等WebRTC功能。
如果遇到无法使用的情况,大概率是iOS版本过低,或者Chrome没有更新到最新版,建议先升级系统和浏览器试试。
内容的提问来源于stack exchange,提问作者maettu
相关产品推荐
相关产品推荐

