Data Collection
Overview of data collection and controls provided by the Airship SDK.
Privacy Manager
Data collected by the Airship SDK can be controlled using Privacy Manager flags. Each flag enables additional Airship features within the SDK and controls what data is collected. The flags are for individual or groups of functional features within the SDK. Some Airship features, such as contact tags, require enabling multiple flags.
SDK Data Collection
All SDK features are enabled by default, but the SDK can be configured to disable all or a subset of features on start. If the SDK is initialized without any features enabled, it will not store any data or make any network requests. If the SDK features are disabled after being previously enabled, it may make a few network requests to opt the channel out to prevent notifications.
The data collected automatically by the SDK is not used to track users across apps.
Data | Description | Privacy Manager Features |
---|---|---|
Channel ID | Airship app install identifier. | Any |
Locale | The app’s locale, comprised of language and language country. | Any |
Time zone | The device time zone. | Any |
Platform | The platform the device is running on, e.g., Android, Fire OS, iOS. | Any |
SDK version | The Airship SDK version. | Any |
Notification opt-In status | Notifications and background opt-in status. | Any |
Contact ID | Internal Airship ID that maps to contact. | Contacts |
App version | The app’s version. | Analytics, In-App Automation |
Message Center credentials | The message center credentials for message list access. | Message Center |
Message Center message status | Message reads and deletes. | Message Center |
Push token | The push address for push notifications. | Push |
Push provider | The push delivery platform, e.g., FCM, HMS. | Push |
Device model | The device model, e.g., Samsung GT-S5830L, iPad Air. | Analytics |
Device manufacturer | The device manufacturer name. | Analytics |
OS version | The device OS version. | Analytics |
Carrier | The device mobile carrier. | Analytics |
Connection Type | The connection type, e.g., Cell, Wifi. | Analytics |
Framework | Airship framework usage: React Native, Unity, Cordova, Flutter, Titanium, and .NET Maui. | Analytics |
Lifecycle events | Init, foreground, background, and time in app. | Analytics |
Scheduled summary1 | Scheduled summary notification status. Only collected if it is being used. | Analytics |
Time sensitive1 | Time sensitive notification status. Only collected if it is being used. | Analytics |
Notification events | Push notification interaction events. | Analytics, Push |
Notification permissions | Authorized notification types and permissions. | Analytics, Push |
In-App Automation events | Events within an In-App display: displays, resolutions, page views, button taps, and survey results. | Analytics, In-App Automation |
1. iOS 15+ only
App Data Collection
In addition to the data automatically collected by the SDK, the app can provide data to the SDK for collection:
Data | Description | Privacy Manager Features |
---|---|---|
Channel Tags | Tags and tag groups set on the channel | Tags and Attributes |
Channel Subscription Lists | Subscription Lists set on the channel | Tags and Attributes |
Channel Attributes | Attributes set on the channel | Tags and Attributes |
Contact Tags | Tags and tag groups set on the contact | Tags and Attributes, Contacts |
Contact Subscription Lists | Subscription Lists set on the contact | Tags and Attributes, Contacts |
Contact Attributes | Attributes set on the contact | Tags and Attributes, Contacts |
Named User | Contact’s external ID | Contacts |
Associated Channels | Email and email opt-in data, SMS and SMS opt-in data, etc. | Contacts |
Associated Identifiers | Additional analytics identifiers | Analytics |
Custom Events | App’s custom events | Analytics |
Screen Tracking | App’s screen tracking | Analytics |
Permission Collection | Additional permissions collected by the SDK | Analytics |
Feature Flag Interaction | Events related to Feature FlagsA toggle for controlling the availability of content or functionality in your app or website. A flag’s Configurations determine the audience, schedule, and property values to apply when the flag is enabled. Flag properties enable making immediate code updates, bypassing the need for traditional code changes and release processes. | Feature Flags, Analytics |
Data Privacy
Airship makes HTTPS encryption (also referred to as TLS connection) available for data in transit to or from the Service. For more information, see Airship Security Measures . Data collected by the SDK is not transferred to any third parties unless a partner integration is enabled and configured by the application. For information on individual data requests, see Individual Data Privacy Rights.
Using Privacy Manager
The Privacy Manager allows setting default enabled features as well as modifying the enabled features at runtime. This table provides a mapping of the flags:
Privacy Manager Flags
Privacy Manager Flag | Kotlin Constant | AirshipConfig Value |
---|---|---|
Push | PrivacyManager.Feature.PUSH | push |
In-App Automation | PrivacyManager.Feature.IN_APP_AUTOMATION | in_app_automation |
Message Center | PrivacyManager.Feature.MESSAGE_CENTER | message_center |
Tags and Attributes | PrivacyManager.Feature.TAGS_AND_ATTRIBUTES | tags_and_attributes |
Contacts | PrivacyManager.Feature.CONTACTS | contacts |
Feature Flags | PrivacyManager.Feature.FEATURE_FLAGS | feature_flags |
Analytics | PrivacyManager.Feature.ANALYTICS | analytics |
All | PrivacyManager.Feature.ALL | all |
None | PrivacyManager.Feature.NONE | none |
Privacy Manager Flag | Java Constant | AirshipConfig Value |
---|---|---|
Push | PrivacyManager.Feature.PUSH | push |
In-App Automation | PrivacyManager.Feature.IN_APP_AUTOMATION | in_app_automation |
Message Center | PrivacyManager.Feature.MESSAGE_CENTER | message_center |
Tags and Attributes | PrivacyManager.Feature.TAGS_AND_ATTRIBUTES | tags_and_attributes |
Contacts | PrivacyManager.Feature.CONTACTS | contacts |
Feature Flags | PrivacyManager.Feature.FEATURE_FLAGS | feature_flags |
Analytics | PrivacyManager.Feature.ANALYTICS | analytics |
All | PrivacyManager.Feature.ALL | all |
None | PrivacyManager.Feature.NONE | none |
Privacy Manager Flag | Swift Constant | AirshipConfig Value |
---|---|---|
Push | Features.push | push |
In-App Automation | Features.inAppAutomation | in_app_automation |
Message Center | Features.messageCenter | message_center |
Tags and Attributes | Features.tagsAndAttributes | tags_and_attributes |
Contacts | Features.contacts | contacts |
Analytics | Features.analytics | analytics |
All | Features.all | all |
None | [] | none |
Privacy Manager Flag | Objective-C Constant | AirshipConfig Value |
---|---|---|
Push | UAFeaturesPush | push |
In-App Automation | UAFeaturesInAppAutomation | in_app_automation |
Message Center | UAFeaturesMessageCenter | message_center |
Tags and Attributes | UAFeaturesTagsAndAttributes | tags_and_attributes |
Contacts | UAFeaturesContacts | contacts |
Analytics | UAFeaturesAnalytics | analytics |
All | UAFeaturesAll | all |
None | UAFeaturesNone | none |
Privacy Manager Flag | JS Constant |
---|---|
Push | Feature.Push |
In-App Automation | Feature.InAppAutomation |
Message Center | Feature.MessageCenter |
Tags and Attributes | Feature.TagsAndAttributes |
Contacts | Feature.Contacts |
Analytics | Feature.Analytics |
All | FEATURES_ALL |
None | [] |
Privacy Manager Flag | Dart Constant | AirshipConfig Value |
---|---|---|
Push | Feature.push | push |
In-App Automation | Feature.inAppAutomation | in_app_automation |
Message Center | Feature.messageCenter | message_center |
Tags and Attributes | Feature.tagsAndAttributes | tags_and_attributes |
Contacts | Feature.contacts | contacts |
Analytics | Feature.analytics | analytics |
All | N/A | all |
None | [] | none |
Privacy Manager Flag | Value |
---|---|
Push | “push” |
In-App Automation | “in_app_automation” |
Message Center | “message_center” |
Tags and Attributes | “tags_and_attributes” |
Contacts | “contacts” |
Analytics | “analytics” |
All | “all” |
None | [] |
Privacy Manager Flag | Value |
---|---|
Push | “push” |
In-App Automation | “in_app_automation” |
Message Center | “message_center” |
Tags and Attributes | “tags_and_attributes” |
Contacts | “contacts” |
Analytics | “analytics” |
All | “all” |
None | [] |
Privacy Manager Flag | C# Constant | AirshipConfig Value |
---|---|---|
Push | Features.Push | push |
In-App Automation | Features.InAppAutomation | in_app_automation |
Message Center | Features.MessageCenter | message_center |
Tags and Attributes | Features.TagsAndAttributes | tags_and_attributes |
Contacts | Features.Contacts | contacts |
Analytics | Features.Analytics | analytics |
Chat | Features.Chat | chat |
Location | Features.Location | location |
All | Features.All | all |
None | Features.None | none |
Privacy Manager Flag | JS Constant |
---|---|
Push | featurePush |
In-App Automation | featureInAppAutomation |
Message Center | featureMessageCenter |
Tags and Attributes | featureTagsAndAttributes |
Contacts | featureContacts |
Analytics | featureAnalytics |
Chat | featureChat |
Location | featureLocation |
All | featureAll |
None | featureNone |
Privacy Manager Flag | String Feature Name |
---|---|
Push | “FEATURE_PUSH” |
In-App Automation | “FEATURE_IN_APP_AUTOMATION” |
Message Center | “FEATURE_MESSAGE_CENTER” |
Tags and Attributes | “FEATURE_TAGS_AND_ATTRIBUTES” |
Contacts | “FEATURE_CONTACTS” |
Analytics | “FEATURE_ANALYTICS” |
Chat | “FEATURE_CHAT” |
Location | “FEATURE_LOCATION” |
All | “FEATURE_ALL” |
None | “FEATURE_NONE” |
Configuring Default Enabled Features
Default enabled features can be set in the Airship Config options.
Setting default features
enabledFeatures = push
val options = AirshipConfigOptions.newBuilder()
// ...
.setEnabledFeatures(PrivacyManager.Feature.PUSH)
.build()
enabledFeatures = push
AirshipConfigOptions options = AirshipConfigOptions.newBuilder()
// ...
.setEnabledFeatures(PrivacyManager.Feature.PUSH)
.build();
let config = Config.default()
config.enabledFeatures = [.push]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>push</string>
</array>
...
</dict>
</plist>
UAConfig *config = [UAConfig defaultConfig];
config.enabledFeatures = UAFeaturesPush;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>push</string>
</array>
...
</dict>
</plist>
await Airship.takeOff({
// ...
enabledFeatures: [Feature.Push]
})
Airship.takeOff({
// ...
enabledFeatures: [Feature.push]
})
Airship.takeOff({
// ...
enabledFeatures: ["push"]
})
await Airship.takeOff({
// ...
enabledFeatures: ["push"]
})
enabledFeatures = push
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>push</string>
</array>
...
</dict>
</plist>
Airship.takeOff({
// ...
"enabledFeatures": ["push"]
})
// Configure via 'Window > UrbanAirship > Settings' UI
To fully disable data collection by default, just set the enabled features to none.
Disabling all features
enabledFeatures = none
val options = AirshipConfigOptions.newBuilder()
// ...
.setEnabledFeatures(PrivacyManager.Feature.NONE)
.build()
enabledFeatures = none
AirshipConfigOptions options = AirshipConfigOptions.newBuilder()
// ...
.setEnabledFeatures(PrivacyManager.Feature.NONE)
.build();
let config = Config.default()
config.enabledFeatures = []
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>none</string>
</array>
...
</dict>
</plist>
UAConfig *config = [UAConfig defaultConfig];
config.enabledFeatures = UAFeaturesNone;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>none</string>
</array>
...
</dict>
</plist>
await Airship.takeOff({
// ...
enabledFeatures: []
})
Airship.takeOff({
// ...
enabledFeatures: []
})
Airship.takeOff({
// ...
enabledFeatures: []
})
await Airship.takeOff({
// ...
enabledFeatures: []
})
enabledFeatures = none
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>enabledFeatures</key>
<array/>
<string>none</string>
</array>
...
</dict>
</plist>
Airship.takeOff({
// ...
"enabledFeatures": ["none"]
})
// Configure via 'Window > UrbanAirship > Settings' UI
Modifying Enabled Features
Features can be enabled and disabled at any time after takeOff. Once a feature set is modified from the default, those settings will be persisted in the SDK between app inits.
Enabling features
UAirship.shared().privacyManager.enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS)
UAirship.shared().getPrivacyManager.enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS);
Airship.privacyManager.enableFeatures([.push, .analytics])
[UAirship.privacyManager enableFeatures:UAFeaturesPush | UAFeaturesAnalytics];
await Airship.privacyManager.enableFeatures([Feature.Push, Feature.Analytics]);
Airship.privacyManager.enableFeatures([Feature.push, Feature.analytics]);
Airship.privacyManager.enableFeatures(["push", "analytics"]);
await Airship.privacyManager.enableFeatures(["push", "analytics"])
Airship.Instance.EnableFeatures(Features.Push | Features.Analytics);
Airship.privacyManager.enable([featurePush, featureAnalytics])
Airship.Shared.EnableFeatures(new string[]{"FEATURE_PUSH", "FEATURE_ANALYTICS");
Disabling features
UAirship.shared().privacyManager.disable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS)
UAirship.shared().getPrivacyManager().enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS);
Airship.privacyManager.disableFeatures([.push, .analytics])
[UAirship.privacyManager disableFeatures:UAFeaturesPush | UAFeaturesAnalytics];
await Airship.privacyManager.disableFeatures([Feature.Push, Feature.Analytics]);
Airship.privacyManager.disableFeature([Feature.push, Feature.analytics]);
Airship.privacyManager.disableFeature(["push", "analytics"]);
await Airship.privacyManager.disableFeatures(["push", "analytics"])
Airship.Instance.DisableFeatures(Features.Push | Features.Analytics);
Airship.privacyManager.disable([featurePush, featureAnalytics])
Airship.Shared.DisableFeatures(new string[]{"FEATURE_PUSH", "FEATURE_ANALYTICS");
Categories