SDK opt-out (e.g. GDPR)

If you plan to send personal user data and have to comply with EU's GDPR, any other data privacy law or simply want to give your users more control regarding their privacy, these methods will help you plug your consent screen to Batch.

There are two SDK operation modes:

  • SDK enabled by default, opting-out required via an explicit method call: this is the default mode.
  • SDK disabled by default, opting-in required.

Opting-out

In order to opt-out from SDK, simply call:

import { Batch } from '@batch.com/react-native-plugin';

await Batch.optOut();

Opting out will:

  • Disable any network capability from the SDK
  • Disable all In-App campaigns
  • Make the Inbox module return an error immediatly when used
  • Make the SDK reject any editor calls
  • Make the SDK reject calls to batch.user.trackEvent(), batch.user.trackTransaction(), batch.user.trackLocation() and any related methods

Even if you opt-in afterwards, data generated (such as user data or tracked events) while opted out WILL be lost.

You can also wipe the SDK installation data:

import { Batch } from '@batch.com/react-native-plugin';

await Batch.optOutAndWipeData();

This will wipe the data locally and request a remote data removal for the matching Installation ID and its associated data.
Any user-level data associated with the Custom User ID (if any) set via our server APIs will not be deleted. However, the Installation ID <> Custom User ID association will be, effectively logging the user out before deleting their installation data.
Sending notifications to this user using their Advertising ID (via the Transactional API or a Custom Audience) will not be possible for a month.

Disabling the SDK by default

In order to disable the SDK by default do the following:

  • On Android, add the following meta-data entry to your AndroidManifest's <application> tag:
<meta-data android:name="batch_opted_out_by_default" android:value="true" />
  • On iOS, add the following key in your Info.plist.
<key>BATCH_OPTED_OUT_BY_DEFAULT</key>
<true/>
  • If you are using Expo, you can update the app configuration file as following :
// app.json/app.config.js

{
  "expo": {
    ...,
    "plugins": [
      [
        "@batch.com/react-native-plugin",
        {
          "androidApiKey": "YOUR_ANDROID_BATCH_API_KEY",
          "iosApiKey": "YOUR_IOS_BATCH_API_KEY",
          "enableDefaultOptOut": true
        }
      ]
    ]
  }
}

Opting-in

Once you've opted-out (either programmatically, or by default), you can re-enable the SDK by calling the following:

import { Batch } from '@batch.com/react-native-plugin';

await Batch.optIn();