13

I'm looking to properly format the Info.plist file in order to make in app purchase work with react-native-in-app-utils but I'm not sure how to format the data and what kind of data to insert.

This thread mentions the necessity to include the app bundle id inside the Info.plist file.

iOS in app purchase - no products received

Hugo
  • 1,308
  • 3
  • 17
  • 37

1 Answers1

44

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.

Philipp Otto
  • 3,722
  • 2
  • 27
  • 47
richTheCreator
  • 988
  • 1
  • 10
  • 11
  • I'm not sure if this changed since you posted this answer, but expo's docs specify that you can put any arbitrary key / values in the `infoPlist` entry with no additional validation now. See the docs here: https://docs.expo.io/versions/latest/config/app/#infoplist – stuckj Apr 14 '21 at 16:57
  • 1
    You can run `expo prebuild` to generate the native code for your project and see what the resulting `Info.plist` would be in a managed EAS build. The resulting Info.plist could be a bit different in a legacy `expo build:ios` project. – Evan Bacon May 12 '21 at 18:58