Batch SDK v2 is a major release, which introduces breaking changes from 1.x. This guide describes how to update your application when using a previous version.
Upgrading the SDK version
To upgrade from v1 to v2, you need to change the SDK version in your build.gralde:
This version introduced a new way of starting the SDK. Since Batch.setConfig has been removed, you will have to replace it with :
Batch.start("YOUR_API_KEY")
Batch.start("YOUR_API_KEY");
You still need to start the SDK in your Application subclass and register an activity lifecycle callback.
Push Providers
This version also removed support for old push providers (Google Cloud Messaging and FCM Instance ID). Batch now only support for FCM's Token APIs. Overriding the Sender ID is no longer possible in any way.
You have to use firebase-messaging 22.0.0 or higher. We highly recommend to use the latest version when possible.
Add the following to your build.gradle if not already present:
Android Batch SDK 1.21 had removed automatic collection of AAID (Android Advertising Identifier). This version has totally drop the support of the AAID and you can no longer set an advertising id to Batch since all related APIs have been removed.
Advanced Information
The Batch SDK V1 allowed you to disable advanced information generally with setCanUseAdvancedDeviceInformation(false). This has been removed and replaced with a more fine-tuning control of what you want to enable with:
Batch.updateAutomaticDataCollection {
it.apply {
setGeoIPEnabled(true) // Enable GeoIP resolution on server side
setDeviceBrandEnabled(true) // Enable automatic collection of the device brand information
setDeviceModelEnabled(true) // Enable automatic collection of the device model information
}
}
Batch.updateAutomaticDataCollection(config -> {
config.setGeoIPEnabled(true) // Enable GeoIP resolution on server side
.setDeviceBrandEnabled(true) // Enable automatic collection of the device brand information
.setDeviceModelEnabled(true); // Enable automatic collection of the device model information
});
All data configurable with this API are now disabled by default and should be enabled if you want to use it.
All deprecated APIs in the SDK v1 have been removed and some others have been renamed/reworked. To see in details the differences, please visit our changelog.
Project migration
This version follows Batch's pivot to being an omnichannel platform. It allows you to collect data for your Projects and Profiles. If you are not familiar with these two concepts, please see this guide beforehand.
Profile Attributes
First of all, most of the user-related write APIs have been removed. Reading methods are still usable since we do not provide yet a way to get synced data for a Profile, but keep in mind that the data returned is only about your installation and not your Profile.
To interacts with our user-centered model, you should now use the Batch.Profile module. Let's see a migration example.
To make it easier to collect data to a Profile, Batch has added two automatic ways to migrate old installation's data on a Profile. So the first time a user will launch your application running on v2 :
He will be automatically identified (logged-in) if he had a Batch custom_user_id set on the local storage.
Its natives (language/region) and customs data will be automatically migrate to a Profile if your app is attached to a Project.
These migrations are enabled by default, but you may want to disable them, to do so add the following before starting the SDK:
class YourApp : Application() {
override fun onCreate() {
super.onCreate()
// Disable profile's migration
Batch.disableMigration(
EnumSet.of(
// Whether Batch should automatically identify logged-in user when running the SDK for the first time.
// This mean user with a custom_user_id will be automatically attached a to a Profile and could be targeted within a Project scope.
BatchMigration.CUSTOM_ID,
// Whether Batch should automatically attach current installation's data (language/region/customDataAttributes...)
// to the User's Profile when running the SDK for the first time.
BatchMigration.CUSTOM_DATA
)
)
// Then start the sdk
Batch.start("YOUR_API_KEY")
registerActivityLifecycleCallbacks(BatchActivityLifecycleHelper())
}
}
public class YourApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// Disable profile's migration
Batch.disableMigration(
EnumSet.of(
// Whether Batch should automatically identify logged-in user when running the SDK for the first time.
// This mean user with a custom_user_id will be automatically attached a to a Profile and could be targeted within a Project scope.
BatchMigration.CUSTOM_ID,
// Whether Batch should automatically attach current installation's data (language/region/customDataAttributes...)
// to the User's Profile when running the SDK for the first time.
BatchMigration.CUSTOM_DATA
)
);
// Then start the sdk
Batch.start("YOUR_API_KEY");
registerActivityLifecycleCallbacks(new BatchActivityLifecycleHelper());
}
}