Some profiling attributes require special permissions to be declared by your app. On iOS these are declared as usage-description keys in Info.plist, or - in the case of Wi-Fi - as a capability on the app target. Profiling will continue to operate without them, albeit with values missing.
It is fine to ship the app without these permissions, but you may want to add them where possible to enrich device intelligence. The following are optional permissions that can be enabled:
Advertisting ID
Add the following key to Info.plist:
NSUserTrackingUsageDescription
This enables Darwinium to access the device's advertising identifier (IDFA) via App Tracking Transparency. As with ad retargeting, access is requested through a popup notification (which your organization may or may not already be using). The value of the key is the user-facing string iOS displays in that prompt.
This permission provides:
profiling.ios.advertising_id
This is a particularly sticky identifier that may be useful across multiple networks, and is considered in Darwinium's device ID and signatures.
Location
Add one of the following keys to Info.plist:
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription
These provide insight around the iOS device's geolocation — this is in addition to geo insights provided from sources such as IP addresses. They are useful in determining geo anomalies, such as the device location differing from the IP address location, or spoofed/mocked locations. The value of each key is the user-facing string iOS displays in the permission prompt; choose the key that matches when your app needs location (foreground only vs. background).
Captured attributes include:
profiling.ios.system.location.latitude
profiling.ios.system.location.longitude
profiling.ios.system.location.altitude
profiling.ios.system.location.is_mock
The following attributes are also calculated on Darwinium's backend when this permission is enabled:
profiling.ios.system.location.coordinate
profiling.ios.system.location.geoname_id
profiling.ios.system.location.country
profiling.ios.system.location.nearest_country
profiling.ios.system.location.nearest_country_distance
profiling.ios.system.location.state
profiling.ios.system.location.state_code
profiling.ios.system.location.nearest_state
profiling.ios.system.location.nearest_state_code
profiling.ios.system.location.nearest_state_distance
profiling.ios.system.location.locality
profiling.ios.system.location.nearest_locality
profiling.ios.system.location.nearest_locality_distance
profiling.ios.system.location.zip_post_code
profiling.ios.system.location.nearest_zip_post_code
profiling.ios.system.location.nearest_zip_post_code_distance
Access Wi-Fi Information
Add the Access Wi-Fi Information capability to the app target. Note that the capability must be enabled on the app's certificate (App ID) first before it can be added to the target.
This enables enhanced insights around Wi-Fi. These are particularly useful when trying to determine if a user has a variety of devices that are potentially part of a device farm connected to a single problematic access point.
Attributes provided include:
profiling.ios.system.network.wifi_ssid
profiling.ios.system.network.wifi_bssid
profiling.ios.system.network.is_constrained
profiling.ios.system.network.interfaces_hash