Run setup_permissions
directly in your Podfile
This release come with an alternative permission linkage system for iOS: calling a function, setup_permissions
inside your Podfile
.
It offers the same benefits as the react-native setup-ios-permissions
command (and actually perform the exact same operation), but it lives in your Podfile
, so there's no need to run it each time your delete your node_modules
directory.
The only requirement is to run pod install
when your update your Podfile
, which make much more sense 😄
This method also solves issues with monorepos / dependencies hoisting.
To migrate, remove your reactNativePermissionsIOS
config, and update your 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'
Then in the same file, call setup_permissions
with the wanted permissions:
# …
platform :ios, min_ios_version_supported
prepare_react_native_project!
# ⬇️ uncomment wanted permissions (don't forget to remove the last comma)
setup_permissions([
# 'AppTrackingTransparency',
# 'BluetoothPeripheral',
# 'Calendars',
# 'Camera',
# 'Contacts',
# 'FaceID',
# 'LocationAccuracy',
# 'LocationAlways',
# 'LocationWhenInUse',
# 'MediaLibrary',
# 'Microphone',
# 'Motion',
# 'Notifications',
# 'PhotoLibrary',
# 'PhotoLibraryAddOnly',
# 'Reminders',
# 'SpeechRecognition',
# 'StoreKit'
])
# …
And run pod install
. Done! ✨
📌 The React Native CLI plugin still exists and will not be removed until next major version.
request
now accepts() => Promise<boolean>
asrationale
argument.
This way, you can display custom rationale alerts instead of the native ones (fixes #710)