Expo AV麦克风权限无弹窗且录音启动失败问题求助
音频录制权限自动拒绝问题(Expo开发)
我用Expo开发应用时碰到了音频录制权限的问题。点击应用内的录音按钮后,控制台输出如下错误:
LOG Requesting permissions.. LOG Starting recording.. ERROR Failed to start recording [Error: Missing audio recording permissions.]
权限申请弹窗根本没弹出来,后来修改startRecording的权限申请逻辑,加了.then和.catch后直接进入catch分支,说明权限被自动拒绝了。
我已经尝试了以下解决步骤:
- 在app.json里配置了expo-av插件,并且添加了microphonePermission权限声明
- 确认app.json里的麦克风权限提示语是"Allow Anonimia to access your microphone."
- 移除了expo-image-picker插件配置中值为false的microphonePermission项
- 重建了开发客户端,并且确保用了最新版的expo-cli和expo sdk
但问题仍未解决,无法启动音频录制。以下是相关的函数代码和app.json配置,恳请提供解决思路:
startRecording函数
async function startRecording() { try { console.log("Requesting permissions.."); await Audio.requestPermissionsAsync(); await Audio.setAudioModeAsync({ allowsRecordingIOS: true, playsInSilentModeIOS: true, }); console.log("Starting recording.."); const { recording } = await Audio.Recording.createAsync( Audio.RecordingOptionsPresets.HIGH_QUALITY ); setRecording(recording); setIsRecording(true); console.log("Recording started"); } catch (err) { console.error("Failed to start recording", err); } }
app.json配置
{ "expo": { "userInterfaceStyle": "automatic", "name": "Anonimia", "slug": "anonymous-chat", "description": "Anonymous chat app", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "light", "splash": { "image": "./assets/splash.png", "resizeMode": "contain", "backgroundColor": "#ffffff" }, "assetBundlePatterns": ["**/*"], "ios": { "supportsTablet": true, "bundleIdentifier": "app.anonimia.messenger" }, "plugins": [ "@react-native-firebase/app", [ "expo-image-picker", { "photosPermission": "Allow Anonimia to open photos", "cameraPermission": "Allow Anonimia to open the camera" } ], [ "expo-av", { "microphonePermission": "Allow Anonimia to access your microphone." } ] ], "android": { "backgroundColor": "#222831", "package": "app.anonimia.messenger", "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#ffffff" }, "googleServicesFile": "./google-services.json" }, "web": { "favicon": "./assets/favicon.png" }, "extra": { "eas": { "projectId": "682e0444-81fd-45b2-8bec-aecdd8b4e48d" } } } }
内容的提问来源于stack exchange,提问作者Web Crop
相关产品推荐
相关产品推荐

