Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- js
- 리액트
- 문자열 대소문자
- firebase 라이브러리
- react native
- PongWorld
- fire base
- AWS Access Key
- GIT
- img upload
- babel.config.js
- 백준
- React
- AWS
- Next.js
- react native 세팅
- 문자열 대소문자 구별
- react native CLI
- s3 upload
- aws bucket 정책
- 에러
- react native picker
- 리엑트 네이티브 아이콘
- error
- 리액트 네이티브 에러
- 리액트 네이티브
- react native 개발
- Access Key 생성
- Project
- react native font
Archives
- Today
- Total
밝을희 클태
[react native / 리액트 네이티브]react-native-permissions 설치 방법 본문
마모리(My Memory) 프로젝트
[react native / 리액트 네이티브]react-native-permissions 설치 방법
huipark 2023. 9. 22. 01:20https://github.com/zoontek/react-native-permissions#supported-permissions
GitHub - zoontek/react-native-permissions: An unified permissions API for React Native on iOS, Android and Windows.
An unified permissions API for React Native on iOS, Android and Windows. - GitHub - zoontek/react-native-permissions: An unified permissions API for React Native on iOS, Android and Windows.
github.com
라이브러리 설치
$ npm install --save react-native-permissions
IOS 설정
Podfile 수정
리엑트 네이티브 버전에 따라 설정
# with react-native >= 0.72 - # Resolve react_native_pods.rb with node to allow for hoisting - require Pod::Executable.execute_command('node', ['-p', - 'require.resolve( - "react-native/scripts/react_native_pods.rb", - {paths: [process.argv[1]]}, - )', __dir__]).strip + def node_require(script) + # Resolve script with node to allow for hoisting + require Pod::Executable.execute_command('node', ['-p', + "require.resolve( + '#{script}', + {paths: [process.argv[1]]}, + )", __dir__]).strip + end + node_require('react-native/scripts/react_native_pods.rb') + node_require('react-native-permissions/scripts/setup.rb')
# with react-native < 0.72 require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + require_relative '../node_modules/react-native-permissions/scripts/setup'
그런 다음 같은 파일 아래의 코드 밑에
platform :ios, min_ios_version_supported prepare_react_native_project!
아래의 코드를 추가해 주고 사용할 권한만 주석처리를 제거해 준다.
# ⬇️ 사용할 권한에는 주석 제거후 마지막 권한에는 쉼표를 꼭 제거!! setup_permissions([ # 'AppTrackingTransparency', # 'BluetoothPeripheral', # 'Calendars', # 'Camera', # 'Contacts', # 'FaceID', # 'LocationAccuracy', # 'LocationAlways', # 'LocationWhenInUse', # 'MediaLibrary', # 'Microphone', # 'Motion', # 'Notifications', # 'PhotoLibrary', # 'PhotoLibraryAddOnly', # 'Reminders', # 'SpeechRecognition', # 'StoreKit' ]) # …
podfile 설정을 마치고
$ pod install
마지막으로 info.plist 설정
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <!-- 🚨 앱에서 사용할 권한만 추가 🚨 --> <key>NSAppleMusicUsageDescription</key> <string>YOUR TEXT</string> <key>NSBluetoothAlwaysUsageDescription</key> <string>YOUR TEXT</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>YOUR TEXT</string> <key>NSCalendarsUsageDescription</key> <string>YOUR TEXT</string> <key>NSCameraUsageDescription</key> <string>YOUR TEXT</string> <key>NSContactsUsageDescription</key> <string>YOUR TEXT</string> <key>NSFaceIDUsageDescription</key> <string>YOUR TEXT</string> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>YOUR TEXT</string> <key>NSLocationTemporaryUsageDescriptionDictionary</key> <dict> <key>YOUR-PURPOSE-KEY</key> <string>YOUR TEXT</string> </dict> <key>NSLocationWhenInUseUsageDescription</key> <string>YOUR TEXT</string> <key>NSMicrophoneUsageDescription</key> <string>YOUR TEXT</string> <key>NSMotionUsageDescription</key> <string>YOUR TEXT</string> <key>NSPhotoLibraryUsageDescription</key> <string>YOUR TEXT</string> <key>NSPhotoLibraryAddUsageDescription</key> <string>YOUR TEXT</string> <key>NSRemindersUsageDescription</key> <string>YOUR TEXT</string> <key>NSSpeechRecognitionUsageDescription</key> <string>YOUR TEXT</string> <key>NSSiriUsageDescription</key> <string>YOUR TEXT</string> <key>NSUserTrackingUsageDescription</key> <string>YOUR TEXT</string> <!-- … --> </dict> </plist>
IOS 푸시 알람 같은 경우는 info.plist에 별도의 항목을 추가하지 않는다.
안드로이드 설정
android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 🚨 사용할 권한만 추가 🚨 --> <uses-permission android:name="android.permission.ACCEPT_HANDOVER" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" /> <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BODY_SENSORS" /> <uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.RECEIVE_MMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.USE_SIP" /> <uses-permission android:name="android.permission.UWB_RANGING" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALL_LOG" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- … --> </manifest>