1import { ConfigPlugin, createRunOncePlugin } from 'expo/config-plugins'; 2 3const pkg = require('expo-tracking-transparency/package.json'); 4 5export const DEFAULT_NSUserTrackingUsageDescription = 6 'Allow this app to collect app-related data that can be used for tracking you or your device.'; 7 8const withTrackingTransparency: ConfigPlugin< 9 { 10 /** 11 * Sets the iOS `NSUserTrackingUsageDescription` permission message in `Info.plist`. Omitting a 12 * description will result in using the default permission message. 13 * @default 'Allow this app to collect app-related data that can be used for tracking you or your 14 * device.' 15 */ 16 userTrackingPermission?: string; 17 } | void 18> = (config, props) => { 19 config = withUserTrackingPermission(config, props); 20 return config; 21}; 22 23export const withUserTrackingPermission: ConfigPlugin< 24 { 25 userTrackingPermission?: string; 26 } | void 27> = (config, { userTrackingPermission } = {}) => { 28 if (!config.ios) config.ios = {}; 29 if (!config.ios.infoPlist) config.ios.infoPlist = {}; 30 config.ios.infoPlist.NSUserTrackingUsageDescription = 31 userTrackingPermission || 32 config.ios.infoPlist.NSUserTrackingUsageDescription || 33 DEFAULT_NSUserTrackingUsageDescription; 34 35 return config; 36}; 37 38export default createRunOncePlugin(withTrackingTransparency, pkg.name, pkg.version); 39