Appearance
GDPR Compliance
Overview
As per GDPR's data protection laws, it is mandatory for all applications to implement the following methods. These methods allow users to control the information that they share with Upshot.ai.
The Upshot iOS SDK provides comprehensive tools to help your application comply with GDPR (General Data Protection Regulation) requirements, including user data deletion, marketing opt-outs, and data collection controls.
User Disable (Right to be Forgotten)
Disable User
This method is used to delete all recorded data and disable Upshot.ai for a user (appuid).
Important Notes:
- Once a data subject requests deletion, all data coming from any device associated with that user will be stopped
- Events and user profile updates are blocked for disabled users
- Only campaigns for unregistered users will be available for displaying
- When a user profile is deleted, no future data is tracked about the user
- If the user wants to start sending data again, appropriate APIs must be invoked
objective-c
@import Upshot;
// Disable user and delete all data
[[BrandKinesis sharedInstance] disableUser:^(BOOL status, NSError * _Nullable error) {
}];
swift
import Upshot
// Disable user and delete all data
BrandKinesis.sharedInstance().disableUser({ status, error in
})
Marketing Opt-Out
In compliance with GDPR, users can opt out from all marketing channels. The SDK provides flags to control different marketing channels:
Marketing Channel Flags
push_opt
- Controls push notification deliverysms_opt
- Controls SMS message deliveryemail_opt
- Controls email message deliveryip_opt
- Controls IP address usage for geolocation
Important
Setting any opt-out flag to true
means disable that marketing channel. Set to false
to enable the channel.
Push Notification Opt-Out
Block promotional push notifications for a specific user:
SMS Opt-Out
Block promotional SMS notifications for a specific user:
Email Opt-Out
Block promotional email messages for a specific user:
IP Address Opt-Out
Don't Capture IP address:
Complete Marketing Opt-Out
Opt out from all marketing channels at once:
objective-c
// Create complete marketing opt-out details
BKUserInfo *userInfo = [[BKUserInfo alloc] init];
userInfo.emailOptout = [NSNumber numberWithBool:YES];
userInfo.smsOptout = [NSNumber numberWithBool:YES];
userInfo.pushOptout = [NSNumber numberWithBool:YES];
userInfo.ipOptout = [NSNumber numberWithBool:YES];
[userInfo buildUserInfoWithCompletionBlock:nil];
swift
// Create complete marketing opt-out details
let userInfo = BKUserInfo()
userInfo.emailOptout = true
userInfo.smsOptout = true
userInfo.ipOptout = true
userInfo.pushOptout = true
userInfo.build(completionBlock: nil)
Re-enabling Marketing Channels
To enable any marketing channel, set the respective flag to false
:
objective-c
// Create opt-in details
BKUserInfo *userInfo = [[BKUserInfo alloc] init];
userInfo.emailOptout = [NSNumber numberWithBool:NO];
userInfo.smsOptout = [NSNumber numberWithBool:NO];
userInfo.pushOptout = [NSNumber numberWithBool:NO];
userInfo.ipOptout = [NSNumber numberWithBool:NO];
[userInfo buildUserInfoWithCompletionBlock:nil];
swift
// Create opt-in details
let userInfo = BKUserInfo()
userInfo.emailOptout = false
userInfo.smsOptout = false
userInfo.ipOptout = false
userInfo.pushOptout = false
userInfo.build(completionBlock: nil)
Data Opt-Out
This right allows users to opt out of sharing any data with Data Processors.
Important Notes
- Default behavior: Data collection is enabled by default
- Recommendation: For GDPR compliance, consider enabling data opt-out by default and requiring explicit user consent
- Impact: Users who opt out will have stale profiles without latest events
- Segmentation: Past data of opted-out users may still be considered in reports based on date ranges
- Care required: Take appropriate care when creating segments that might include opted-out user profiles
Implementing Data Opt-Out
objective-c
// Create data opt-out details
BKUserInfo *userInfo = [[BKUserInfo alloc] init];
userInfo.dataOptout = [NSNumber numberWithBool:YES];
[userInfo buildUserInfoWithCompletionBlock:nil];
swift
// Create data opt-out details
let userInfo = BKUserInfo()
userInfo.dataOptout = true
userInfo.build(completionBlock: nil)
Re-enabling Data Collection
To re-enable data collection, set the flag to false
:
objective-c
// Create data opt-in details
BKUserInfo *userInfo = [[BKUserInfo alloc] init];
userInfo.dataOptout = [NSNumber numberWithBool:NO];
[userInfo buildUserInfoWithCompletionBlock:nil];
swift
// Create data opt-in details
let userInfo = BKUserInfo()
userInfo.dataOptout = false
userInfo.build(completionBlock: nil)