[React-native] 아 권한 좀 그만 물어보라고요!!!

seoleem Lee·2024년 9월 15일
post-thumbnail

개요

…라고 나도 생각하던 시절이 있었다…

expo의 무자비함을 만나기 전까지…

때는 바야흐로…n시간 전

사용자 갤러리 접근 기능을 만들던 때에 벌어진 일이다…

권한 거절 시 작동하는 기능을 만들고 싶던 나는

그만 생각 없이 권한을 BAN 해버린 것이었다.

그것이 모든 고통의 시작인 줄도 모르고…

와 같은 불상사가 생긴 모두를 위한 해결법.

너무나도 단순하지만,

오히려 단순하기에 생각치도 못했던 그 방법

바로 “설정에 들어가서 수동 권한 허용하기!!!”

…기능을 구현해보자!

1. EXPO Linking install 및 import 하기

expo Linking Doc

핵심은 바로 이 녀석.

Linking 기능을 통해 사용자의 …앱 링크 모두와 상호작용할 수 있는 일반적인 인터페이스를 제공…라고 한다.

역시 공식 문서는 뭐라고 하는지 정확히 모르겠다.

just LEEF(혹은 piil)

1) 프로젝트 폴더에 아래 내용을 install 한다.

npx expo install expo-linking

2) 사용할 Component에 Linking을 import 한다.

import { Linking } from "react-native";

이제 세팅이 끝났다.

2. 설정으로 연결하기

만약 사용자가 권한을 거부한 경우, (그러나 해당 권한이 없으면 어플을 사용할 수 없는 경우)

자연스레 설정으로 유도하여 권한을 허용할 수 있도록 한다.

설정을 여는 함수는 다음과 같이 작성하였다.

// 앱 설정 열기
  const openAppSettings = () => {
    Alert.alert(
      "권한 필요",
      "앱 설정에서 권한을 변경해주세요.",
      [
        {
          text: "취소",
          style: "cancel",
          onPress: () => {
            navigation.navigate("HomeTab", {
              screen: "Home",
            });
          },
        },
        {
          text: "이동",
          onPress: () => Linking.openSettings(),
        },
      ],
      { cancelable: false }
    );
  };

Linking.openSettings()

이 바로 핵심.

이것을 통해 사용자가 alert에서 이동 버튼을 누르면 설정 화면으로 이동하게 된다!

물론 처음부터 사용자가 군말 없이 권한을 허용할 수 있게 유도하는 것이 좋지만…

청개구리 사용자는 어디에나 있으니 미연에 방지하자!

침고로 같은 맥락에서
expo go 테스트 하다 실수로 권한을 거절했다면
수동으로 설정 > 앱 권한에 들어가 expo 설정을 허용해주자

..실은 이걸 알지 못해서 머리 쥐어뜯으며 헤맸다.
나같은 피해자가 더이상 없도록...🙏

profile
한 줄의 코드로 세상을 변화 시키고 싶은 개발자 이서림 입니다.

0개의 댓글