1*435bbba8SBrent Vatneimport { ConfigPlugin, createRunOncePlugin } from 'expo/config-plugins'; 245f57828SCharlie Cruzan 345f57828SCharlie Cruzanconst pkg = require('expo-tracking-transparency/package.json'); 445f57828SCharlie Cruzan 545f57828SCharlie Cruzanexport const DEFAULT_NSUserTrackingUsageDescription = 645f57828SCharlie Cruzan 'Allow this app to collect app-related data that can be used for tracking you or your device.'; 745f57828SCharlie Cruzan 83a421c96SJames Ideconst withTrackingTransparency: ConfigPlugin< 93a421c96SJames Ide { 1045f57828SCharlie Cruzan /** 1145f57828SCharlie Cruzan * Sets the iOS `NSUserTrackingUsageDescription` permission message in `Info.plist`. Omitting a 1245f57828SCharlie Cruzan * description will result in using the default permission message. 1345f57828SCharlie Cruzan * @default 'Allow this app to collect app-related data that can be used for tracking you or your 1445f57828SCharlie Cruzan * device.' 1545f57828SCharlie Cruzan */ 1645f57828SCharlie Cruzan userTrackingPermission?: string; 173a421c96SJames Ide } | void 183a421c96SJames Ide> = (config, props) => { 1945f57828SCharlie Cruzan config = withUserTrackingPermission(config, props); 2045f57828SCharlie Cruzan return config; 2145f57828SCharlie Cruzan}; 2245f57828SCharlie Cruzan 233a421c96SJames Ideexport const withUserTrackingPermission: ConfigPlugin< 243a421c96SJames Ide { 2545f57828SCharlie Cruzan userTrackingPermission?: string; 263a421c96SJames Ide } | void 273a421c96SJames Ide> = (config, { userTrackingPermission } = {}) => { 2845f57828SCharlie Cruzan if (!config.ios) config.ios = {}; 2945f57828SCharlie Cruzan if (!config.ios.infoPlist) config.ios.infoPlist = {}; 3045f57828SCharlie Cruzan config.ios.infoPlist.NSUserTrackingUsageDescription = 3145f57828SCharlie Cruzan userTrackingPermission || 3245f57828SCharlie Cruzan config.ios.infoPlist.NSUserTrackingUsageDescription || 3345f57828SCharlie Cruzan DEFAULT_NSUserTrackingUsageDescription; 3445f57828SCharlie Cruzan 3545f57828SCharlie Cruzan return config; 3645f57828SCharlie Cruzan}; 3745f57828SCharlie Cruzan 3845f57828SCharlie Cruzanexport default createRunOncePlugin(withTrackingTransparency, pkg.name, pkg.version); 39