강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

현자타임님의 프로필 이미지
현자타임

작성한 질문수

[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)

[4-7] 토스트 메세지 표시하기

안드로이드 위치 권한 이슈 2가지 문의

작성

·

3

0

질문 작성시 꼭 참고해주세요

  1. 에러 메세지에서 단서를 찾을 수 있는 경우가 많습니다. 에러 메세지를 읽고 한번 검색해보시는것을 추천드립니다.

  2. 질문글을 작성하실때는, 현재 문제(또는 에러)와 코드나 github을 첨부해주세요.

  3. 개발중인 OS, ReactNative, Node 버전 등의 개발환경을 알려주셔야합니다.

  4. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. 일부만 보여주시면 답변이 어렵습니다.

     

(에러 일부만 자르거나 일부만 복사하지말아주세요) 

  1. 안드로이드의 경우 앱을 열어놓고 설정화면으로 넘어간 다음으로 경로 권한을 내리고 다시 앱으로 돌아가면 앱이 재실행되어 useAppState 가 초기화되어 의도한 동작을 하지 않습니다.

  2. 1번의 경우에 앱을 다시 백그라운드에 두고 다시 앱을 켜면 의도한 동작이 실행되는데 이상하게 getCurrentPosition 의 에러 콜백이 무한으로 돕니다....

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 현자타임님. 안드로이드 위치 권한 문제와 관련하여 겪고 계신 상황을 바탕으로 몇 가지 해결 방법을 제안드립니다.

문제 1: 앱 상태 초기화 문제

앱이 재실행되면서 useAppState가 초기화되는 문제는 안드로이드의 태스크 중심 UI 설계 때문입니다. 많은 안드로이드 앱들이 설정을 변경하고 돌아올 때 기본 상태로 돌아가는 경우가 있습니다. 이를 방지하기 위해서는 다음을 고려해볼 수 있습니다.

  1. ComponentWillUnmount 사용: 설정 화면으로 넘어가기 전에 현재 앱의 상태를 저장하는 메커니즘을 ComponentWillUnmount 또는 useEffect 훅의 cleanup 함수에서 설정하여, 필요한 데이터를 저장하고, 돌아올 때 복구하는 방법입니다.

  2. 전역 상태 관리 도구: Redux, Context API 등 전역 상태 관리 도구를 활용하여 앱의 상태를 유지 관리하는 것도 좋은 방법이 될 수 있습니다.

문제 2: getCurrentPosition 에러 콜백 무한 호출

getCurrentPosition의 에러가 무한으로 호출되는 문제는 위치 관련 설정이 변경되면서 권한의 불일치 등이 원인이 될 수 있습니다. 이를 해결하기 위한 몇 가지 방법은 다음과 같습니다.

  1. 상태 확인: 앱으로 돌아올 때 위치 권한의 상태를 다시 확인하여 필요한 경우 권한을 다시 요청합니다.
   useFocusEffect(
     React.useCallback(() => {
       (async () => {
         const hasPermission = await checkLocationPermission();
         if (!hasPermission) {
           requestLocationPermission();
         }
       })();
     }, [])
   );
  1. 위치 서비스 활성화 확인: 위치 서비스가 활성화되어 있는지도 체크합니다. 이는 getCurrentPosition이 실패하는 주요 원인 중 하나입니다.
   if (!locationServicesEnabled) {
     Alert.alert('위치 서비스가 꺼져 있습니다.');
   }
  1. 콜백 실행 조건 추가: 반복적인 에러 콜백을 막기 위해 조건을 체크 후 콜백을 실행하는 방법입니다.

유사 문제 해결 사례

비슷한 사례를 참고하면 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

현자타임님의 프로필 이미지
현자타임

작성한 질문수

질문하기