因WebRTC权限弹窗未说明用途遭拒,如何按规则修改?
搞定Safari中WebRTC权限弹窗的合规修改方案
我之前帮不少开发者踩过这个坑,苹果的5.1.1条款卡得很严,核心就是不能让用户对着一个没头没脑的权限弹窗一脸懵,必须明确说清楚要摄像头/麦克风干啥。分两种情况给你具体方案:
情况1:你的App是原生App,用SFSafariViewController加载带WebRTC的网页
这种场景下,权限弹窗的说明是由原生App的Info.plist文件控制的,你得给它加两个关键配置:
- 新增
NSCameraUsageDescription键,值要写得具体,比如**"需要访问摄像头以进行实时视频通话"或者"需要访问摄像头完成直播推流"**,别写那种"需要访问摄像头"的空话 - 再新增
NSMicrophoneUsageDescription键,对应的值比如**"需要访问麦克风以同步语音交流"**
一定要贴合你实际的WebRTC用途,是视频会议、直播还是人脸验证,写清楚就行。
情况2:你是纯网页应用(用户直接在Safari打开你的URL)
这种情况没法直接修改系统弹窗的文字,但可以通过两步操作满足合规要求:
- 先告知,再请求:在用户触发权限请求的按钮(比如"开始视频通话"按钮)上方,用清晰的文字说明原因,比如:"点击开始通话,我们需要访问你的摄像头和麦克风,用于实时视频语音交流"
- 主动触发请求:别一打开网页就自动弹权限,必须等用户点击按钮这类主动操作后,再调用
getUserMedia接口请求权限。另外,按需请求——如果只需要视频就别请求麦克风,反之亦然,别多要权限
苹果审核时会看你的网页是否提前清晰告知了用途,只要这步做到位,配合系统弹窗,就能符合要求。
额外注意事项
- 描述必须真实,不能瞎写,比如你是做视频会议的,就不能写"用于拍照",苹果会核查用途匹配度
- 语言要简洁直白,别用技术术语,用户能一眼看懂就行
- 测试时记得用iOS真机上的Safari验证,确保流程顺畅,前置说明清晰
内容的提问来源于stack exchange,提问作者user285594




