开发者工具调试完好,到体验版还是各种bug,这是为什么!?
"permission": {
"scope.record": {
"desc": "需要使用您的麦克风进行语音录制和对话"
}
// 检查并请求录音权限
checkAndRequestRecordPermission() {
return new Promise((resolve, reject) => {
console.log('开始检查录音权限...');
// 首先检查当前权限状态
wx.getSetting({
success: (res) => {
console.log('当前权限设置:', res.authSetting);
if (res.authSetting['scope.record'] === true) {
// 已经授权
console.log('录音权限已授权');
resolve();
} else if (res.authSetting['scope.record'] === false) {
// 用户之前拒绝过,需要引导到设置页面
console.log('用户之前拒绝了录音权限,引导到设置页面');
wx.showModal({
title: '需要录音权限',
content: '为了正常使用语音功能,请在设置中开启录音权限',
confirmText: '去设置',
cancelText: '取消',
success: (modalRes) => {
if (modalRes.confirm) {
wx.openSetting({
success: (settingRes) => {
console.log('设置页面返回结果:', settingRes);
if (settingRes.authSetting['scope.record']) {
console.log('用户在设置页面中授权了录音权限');
resolve();
} else {
console.error('用户在设置页面中仍然拒绝了录音权限');
reject(new Error('用户拒绝了录音权限'));
}
},
fail: (err) => {
console.error('打开设置页面失败:', err);
reject(new Error('打开设置页面失败'));
}
});
} else {
console.log('用户取消了权限设置');
reject(new Error('用户取消了权限设置'));
}
}
});
} else {
// 第一次请求权限
console.log('第一次请求录音权限');
wx.authorize({
scope: 'scope.record',
success: () => {
console.log('录音权限授权成功');
resolve();
},
fail: (err) => {
console.error('录音权限授权失败:', err);
// 用户拒绝了权限,显示说明
wx.showModal({
title: '需要录音权限',
content: '为了正常使用语音功能,请允许使用录音权限',
confirmText: '重新授权',
cancelText: '取消',
success: (modalRes) => {
if (modalRes.confirm) {
// 重新尝试授权
this.checkAndRequestRecordPermission()
.then(() => resolve())
.catch((error) => reject(error));
} else {
reject(new Error('用户拒绝了录音权限'));
}
}
});
}
});
}
},
fail: (err) => {
console.error('获取权限设置失败:', err);
reject(new Error('获取权限设置失败'));
}
});
});
}
这代码在在开发者工具中完全没有问题,但是在体验版总是提醒权限被拒绝。反映问题的帖子都做的这么难用,真实无力吐槽。