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