If you are using expo, it will not expose the entire info.plist
to you.
Expo Workaround
You can add an object as a child of ios
object in the app.json
like so:
"infoPlist": {
"NSCameraUsageDescription": "This app uses the camera to scan barcodes on event tickets."
},
Which will write to the native level but this is limited. Here is a list of all the keys you can access with while using expo
<key>NSCameraUsageDescription</key>
<string>Allow Expo experiences to use your camera</string>
<key>NSContactsUsageDescription</key>
<string>Allow Expo experiences to access your contacts</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Allow Expo experiences to use your location</string>
<key>NSMicrophoneUsageDescription</key>
<string>Allow Expo experiences to access your microphone</string>
<key>NSMotionUsageDescription</key>
<string>Allow Expo experiences to access your device's accelerometer</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Give Expo experiences permission to save photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Give Expo experiences permission to access your photos</string>
View expos official docs here
React-native Init
If you need more low level access to your project, consider using react-native init MyProject
instead of create-react-native-app MyProject
.
This will provide you with full access to all ios and android bundles.
React-native eject
Or if you already built your app via create-react-native-app MyProject
you can run react-native eject
to get the build of react-native-init MyProject
.
Be cautious, there is no returning once this command is ran.
infoPlist
entry with no additional validation now. See the docs here: docs.expo.io/versions/latest/config/app/#infoplist – Cantwell