작성
·
3
0
에러 메세지에서 단서를 찾을 수 있는 경우가 많습니다. 에러 메세지를 읽고 한번 검색해보시는것을 추천드립니다.
질문글을 작성하실때는, 현재 문제(또는 에러)와 코드나 github을 첨부해주세요.
개발중인 OS, ReactNative, Node 버전 등의 개발환경을 알려주셔야합니다.
에러메세지는 일부분이 아닌 전체 상황을 올려주세요. 일부만 보여주시면 답변이 어렵습니다.
안드로이드의 경우 앱을 열어놓고 설정화면으로 넘어간 다음으로 경로 권한을 내리고 다시 앱으로 돌아가면 앱이 재실행되어 useAppState 가 초기화되어 의도한 동작을 하지 않습니다.
1번의 경우에 앱을 다시 백그라운드에 두고 다시 앱을 켜면 의도한 동작이 실행되는데 이상하게 getCurrentPosition 의 에러 콜백이 무한으로 돕니다....
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 현자타임님. 안드로이드 위치 권한 문제와 관련하여 겪고 계신 상황을 바탕으로 몇 가지 해결 방법을 제안드립니다.
앱이 재실행되면서 useAppState
가 초기화되는 문제는 안드로이드의 태스크 중심 UI 설계 때문입니다. 많은 안드로이드 앱들이 설정을 변경하고 돌아올 때 기본 상태로 돌아가는 경우가 있습니다. 이를 방지하기 위해서는 다음을 고려해볼 수 있습니다.
ComponentWillUnmount 사용: 설정 화면으로 넘어가기 전에 현재 앱의 상태를 저장하는 메커니즘을 ComponentWillUnmount 또는 useEffect 훅의 cleanup 함수에서 설정하여, 필요한 데이터를 저장하고, 돌아올 때 복구하는 방법입니다.
전역 상태 관리 도구: Redux, Context API 등 전역 상태 관리 도구를 활용하여 앱의 상태를 유지 관리하는 것도 좋은 방법이 될 수 있습니다.
getCurrentPosition
에러 콜백 무한 호출getCurrentPosition
의 에러가 무한으로 호출되는 문제는 위치 관련 설정이 변경되면서 권한의 불일치 등이 원인이 될 수 있습니다. 이를 해결하기 위한 몇 가지 방법은 다음과 같습니다.
useFocusEffect(
React.useCallback(() => {
(async () => {
const hasPermission = await checkLocationPermission();
if (!hasPermission) {
requestLocationPermission();
}
})();
}, [])
);
getCurrentPosition
이 실패하는 주요 원인 중 하나입니다. if (!locationServicesEnabled) {
Alert.alert('위치 서비스가 꺼져 있습니다.');
}
비슷한 사례를 참고하면 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.