
안드로이드 카메라, 이미지 권한 설정방법
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();
};