Skip to content

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 delivery
  • sms_opt - Controls SMS message delivery
  • email_opt - Controls email message delivery
  • ip_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)

Powered by Upshot.ai