728x90
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" 에러없이 진행할 수 있다.
728x90
반응형
'개발, 코딩 > App - React Native' 카테고리의 다른 글
[ReactNative] Text in FlatList can't working with selectable (0) | 2022.02.04 |
---|---|
앱 버전 관리, 어떻게 하는게 좋을까? (0) | 2022.01.26 |
[에러] Attempt to invoke virtual method 'boolean com.swmansion.reanimated.layoutReanimation.f.j()' on a null object reference (0) | 2022.01.12 |
ReactNative, 푸시 알림 완벽하게 구현하기 (2) | 2022.01.10 |
iOS, rootview background-color (0) | 2022.01.05 |