해결된 질문
작성
·
338
1
import {useEffect} from 'react';
import {Alert, Linking, Platform} from 'react-native';
import {check, PERMISSIONS, request, RESULTS} from 'react-native-permissions';
function usePermissions() {
// 권한 관련
useEffect(() => {
if (Platform.OS === 'android') {
//정확한 위치권한
check(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION)
.then(result => {
console.log('check location', result);
if (result === RESULTS.DENIED) {
return request(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION);
} else if (result === RESULTS.BLOCKED) {
Alert.alert(
'이 앱은 위치 권한 허용이 필요합니다.',
'앱 설정 화면을 열어서 항상 허용으로 바꿔주세요.',
//밑에 배열은 버튼을 의미한다.
[
{
text: '네',
//Linking.openSettings는 핸드폰 설정을 열어준다.
onPress: () => Linking.openSettings(),
},
{
text: '아니오',
onPress: () => console.log('No Pressed'),
style: 'cancel',
},
],
);
}
})
.catch(console.error);
} else if (Platform.OS === 'ios') {
check(PERMISSIONS.IOS.LOCATION_ALWAYS)
.then(result => {
if (result === RESULTS.BLOCKED || result === RESULTS.DENIED) {
Alert.alert(
'이 앱은 백그라운드 위치 권한 허용이 필요합니다.',
'앱 설정 화면을 열어서 항상 허용으로 바꿔주세요.',
[
{
text: '네',
onPress: () => Linking.openSettings(),
},
{
text: '아니오',
onPress: () => console.log('No Pressed'),
style: 'cancel',
},
],
);
}
})
.catch(console.error);
}
if (Platform.OS === 'android') {
//카메라 권한
check(PERMISSIONS.ANDROID.CAMERA)
.then(result => {
if (result === RESULTS.DENIED || result === RESULTS.GRANTED) {
return request(PERMISSIONS.ANDROID.CAMERA);
} else {
console.log(result);
throw new Error('카메라 지원 안 함');
}
})
.catch(console.error);
} else {
check(PERMISSIONS.IOS.CAMERA)
.then(result => {
if (
result === RESULTS.DENIED ||
result === RESULTS.LIMITED ||
result === RESULTS.GRANTED
) {
return request(PERMISSIONS.IOS.CAMERA);
} else {
console.log(result);
throw new Error('카메라 지원 안 함');
}
})
.catch(console.error);
}
}, []);
}
export default usePermissions;
답변 2
0
아 react-native-permissions 삭제하고 깃헙 코드로 --save넣어서 다시 설치했더니 해결되었습니다 답변 감사합니다!
글작성시엔 포매팅이 되어있었는데 여기선 안되어있네요..다음부턴 확인하고 조심하겠습니다!
0
코드 포매팅 해주세요.
RN 몇 버전이신가요? 설치 과정 중에 문제가 생긴 걸로 보여서 다시 설치하는 수밖에 없어보입니다.
https://github.com/zoontek/react-native-permissions?tab=readme-ov-file#android-1
이 부분을 수동으로 진행해야 할 수도 있습니다.