개발, 코딩/App - React Native
react-native-audio, Exception in native call from JS (resolved)
Websterking
2022. 1. 19. 13:26
반응형
react-native-audio
라이브러리를 적용중에
ios에서는 문제없지만
android에서 위와 같은 이슈가 발생하였다.
문제는 github에서도 논의 중
별다른 해결책 없이 끝난것같다
(github issue tracking: 링크)
에러 추적결과
위 문제는 필요한 권한이 부족하여 나타난 현상이었다.
위 문제 해결을 위해서는
react-native-permissions를 통해
라이브러리 사용전 필요한 권한 요청을
사용자로 부터 허락받아야한다.
const prepare = (path: string) => {
const config = {
SampleRate: 22050,
AudioEncoding: 'aac',
Channels: 1,
AudioQuality: 'Low',
AudioEncodingBitRate: 32000
};
return new Promise((resolve, reject) => {
if (Platform.OS === 'android') {
requestMultiple([
PERMISSION.ANDROID.WRITE_EXTERNAL_STORAGE,
PERMISSION.ANDROID.READ_EXTERNAL_STORAGE,
PERMISSION.ANDROID.RECORD_AUDIO
]).then((isAuthorized) => {
if (
isAuthorized['android.permission.READ_EXTENRAL_STORAGE'] === 'denied'
|| isAuthorized['android.permission.WRITE_EXTENRAL_STORAGE'] === 'denied'
|| isAuthorized['android.permission.RECORD_AUDIO'] === 'denied'
) {
reject('no permission')
} else {
AudioRecorder.prepareRecordingPath(path, config);
resolve('has permission')
}
})
} else {
AudioRecorder.prepareRecordingPath(path, config);
resolve('has permission')
}
})
}
이런식으로
외부 저장소 읽기/쓰기, 오디오 레코딩 권한을 획득해야만
"Exception in native call from JS" 에러없이 진행할 수 있다.
반응형