react-native-permissions 카메라 이미지 권한 설정

리액트만패는젊은이·2024년 6월 18일

ReactNative 공부기록

목록 보기
8/12
post-thumbnail

안드로이드 카메라, 이미지 권한 설정방법

1.라이브러리 설치 → yarn add react-native-permissions
2. AndroidManifest.xml 파일 안에 넣어준다

	<!-- 카메라 권한 -->
	<uses-permission android:name="android.permission.CAMERA"/>
	<!-- 앨범 권한 -->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
  <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>

IOS 알림,카메라,이미지 권한 설정방법

Podfile 안에 적어준다

permissions_path = '../node_modules/react-native-permissions/ios'
   # to use app inner permission
  pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
  pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary"
  pod 'Permission-PhotoLibraryAddOnly', :path => "#{permissions_path}/PhotoLibraryAddOnly"
  pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications"

카메라 권한 체크
IOS의 경우 첫진입시에는 권한을 물어보지만 거절하면 다시는 권한 설정하라는 창이 뜨지않는다!!!!! -> 직접 권한이 필요하다는 모달을 만들어서 설정창으로 보내줘야만 한다.


import {Linking} from "react-native";
Linking.openSettings(); // 네이티브 설정창으로 보내주는 로직이 필요함


import {PERMISSIONS, RESULTS, request} from "react-native-permissions";

// 카메라 권한 체크
  const permissionCameraCheck = () => {
    if (Platform.OS !== "ios" && Platform.OS !== "android") return;
    const platformPermissions =
      Platform.OS === "ios"
        ? PERMISSIONS.IOS.CAMERA
        : PERMISSIONS.ANDROID.CAMERA;
    const requestCameraPermission = async () => {
      try {
        const result = await request(platformPermissions);
        console.log(result);
        result === RESULTS.GRANTED
          ? openGeneralCamera()
          : setCameraAuthVisible(true);  // 권한이 없을시에 권한승인필요 모달flag
      } catch (err) {
        Alert.alert("Camera permission err");
        console.warn(err);
      }
    };
    requestCameraPermission();
  };

이미지(앨범) 권한 체크
이미지도 카메라와 동일하게 IOS에서는 첫진입시에는 권한을 물어보지만 거절하면 다시는 권한 설정하라는 창이 뜨지않는다.

import {Linking} from "react-native";
Linking.openSettings(); // 네이티브 설정창으로 보내주는 로직이 필요함


import {PERMISSIONS, RESULTS, request} from "react-native-permissions";

//이미지 권한 체크
  const permissionAlbumCheck = () => {
    if (Platform.OS !== "ios" && Platform.OS !== "android") return;
    const platformPermissions =
      Platform.OS === "ios"
        ? PERMISSIONS.IOS.PHOTO_LIBRARY
        : Platform.Version >= 33
        ? PERMISSIONS.ANDROID.READ_MEDIA_IMAGES
        : PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE;
    const requestCameraPermission = async () => {
      try {
        const result = await request(platformPermissions);
        result === RESULTS.GRANTED
          ? openGeneralAlbum()
          : setImageAuthVisible(true);  // 권한이 없을시에 권한승인필요 모달flag
      } catch (err) {
        Alert.alert("Camera permission err");
        console.warn(err);
      }
    };
    requestCameraPermission();
  };
profile
front-end-developer

0개의 댓글