# frozen_string_literal: true # setup instructions from https://www.npmjs.com/package/react-native-permissions 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" ) platform :ios, min_ios_version_supported prepare_react_native_project! # ⬇️ uncomment wanted permissions setup_permissions( [ # 'AppTrackingTransparency', # 'BluetoothPeripheral', # 'Calendars', "Camera", # 'Contacts', # 'FaceID', "LocationAccuracy", # "LocationAlways", "LocationWhenInUse", "MediaLibrary", "Microphone", # 'Motion', # 'Notifications', "PhotoLibraryAddOnly", "PhotoLibrary" # 'Reminders', # 'Siri', # 'SpeechRecognition', # 'StoreKit', ] ) use_frameworks! linkage: :static # rubocop:disable Style/GlobalVars # Required for react-native-firebase: https://rnfirebase.io/#configure-firebase-with-ios-credentials-react-native--077 $RNFirebaseAsStaticFramework = true # Disable ad ID support: https://rnfirebase.io/analytics/usage#disable-ad-id-usage-on-ios # Conext: https://linear.app/inaturalist/issue/MOB-1182/disable-firebase-for-unauthenticated-users-and-users-with-prefers-no#comment-8c9d3cc2 $RNFirebaseAnalyticsWithoutAdIdSupport = true # rubocop:enable Style/GlobalVars target "iNaturalistReactNative" do config = use_native_modules! use_react_native!( path: config[:reactNativePath], # An absolute path to your application root. app_path: "#{Pod::Config.instance.installation_root}/.." ) pod "react-native-config", path: "../node_modules/react-native-config" envfiles = { "Debug" => "$(PODS_ROOT)/../../.env.staging", "Release" => "$(PODS_ROOT)/../../.env" }.freeze post_install do | installer | # use different .env files for staging and production # https://github.com/luggit/react-native-config#ios-1 installer.pods_project.targets.each do | target | target.build_configurations.each do | build_config | if target.name == "react-native-config" build_config.build_settings["ENVFILE"] = envfiles[build_config.name] end end end react_native_post_install( installer, config[:reactNativePath], mac_catalyst_enabled: false # :ccache_enabled => true ) installer.pods_project.targets.each do | target | target.build_configurations.each do | build_config | build_config.build_settings["APPLICATION_EXTENSION_API_ONLY"] = "NO" end end # react_native_post_install(installer) `sed -i -e $'s/__IPHONE_10_0/__IPHONE_12_0/' Pods/RCT-Folly/folly/portability/Time.h` end end target "iNaturalistReactNative-ShareExtension" do use_react_native!( # to enable hermes on iOS, change `false` to `true` and then install pods hermes_enabled: true ) pod "RNShareMenu", path: "../node_modules/react-native-share-menu" # Manually link packages here to keep your extension bundle size minimal end