We'll walk you through the steps for setting up Qubit on your Android mobile apps in the eCommerce vertical.
In build.gradle
of your Android application module (usually $projectRoot/app/build.gradle) add the following in the dependencies section:
dependencies {
compile 'com.qubit:qubit-sdk-android:2.0.1'
}
Provide application context and tracking ID
. Log level is optional. See Logging for more information. Call start
method to initialize the SDK. You might place this code in your Application
file:
@Override
public void onCreate() {
super.onCreate();
QubitSDK.initialization()
.inAppContext(this)
.withTrackingId("YOUR_TRACKING_ID")
.withLogLevel(QBLogLevel.DEBUG)
.start();
}
Qubit's Android SDK needs the following permissions to communicate with the server and to detect network connectivity (they are added in library manifest):
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
INFO: You don't have to add these permissions to the manifest of your application.
QProtocol (QP) is Qubit's industry-standard, extensible data layer. To send a QP event, call the sendEvent
method taking QBEvent
object as an argument, as shown in the following example.
In the example, we emit a standard ecView
event, but you can modify this data to send any data you wish, based on Qubit's event schema:
QubitSDK.tracker().sendEvent(QBEvents.fromJsonString("ecView", viewJson));
Where:
viewJson
takes the example form (this may vary depending on custom schema configuration):{
"type": "home",
"subtypes": ["Women", "Dresses", "Cocktail Dresses"]
}
QBEvents
class provides several methods that allow you to create an event as QBEvent
object.
String
:Example:
String jsonString = "{ \"type\" : \"home\" }";
QubitSDK.tracker().sendEvent(QBEvents.fromJsonString("ecView", jsonString));
JsonObject
:Example:
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("type", "home");
QubitSDK.tracker().sendEvent(QBEvents.fromJson("ecView", jsonObject));
Object
:Example:
public class EcViewEventData {
private String type;
// some code
}
EcViewEventData object = new EcViewEventData();
object.setType("home");
QubitSDK.tracker().sendEvent(QBEvents.fromObject("ecView", object));
To disable/enable message dispatch on event occurrence, use the following method:
QubitSDK.tracker().enable(false); // disable
QubitSDK.tracker().enable(true); // enable
INFO: Tracking is enabled by default, so you don't need to enable it if you've never disabled it anywhere.
Use getExperiences()
to integrate Experiences into your app.
QubitSDK.getExperiences(
listOfExperienceIds,
{ experienceList -> experienceList.forEach { it.shown() } },
{ throwable -> Log.e(TAG, "Error: ", throwable) },
222,
false,
true
)
QubitSDK.getExperiences(
listOfExperienceIds,
experienceList -> {
for (Experience experience : experienceList) {
experience.shown();
}
return Unit.INSTANCE;
},
throwable -> {
Log.d(TAG, throwable.toString());
return Unit.INSTANCE;
}, 222, false, true
);
Where:
variation
, preview
, ignoreSegments
are optional parameters.Use getPlacement()
to add Qubit Placements into your app.
QubitSDK.getPlacement(
"83f6b528-9336-11eb-a8b3",
PlacementMode.LIVE,
PlacementPreviewOptions("1ybrhki9RvKWpA", "AUuQ_8z7SV-Fw"),
{ placement ->
// get our payload
placement?.content
// send an impression event
placement?.impression()
// send a clickthrough event
placement?.clickthrough()
},
{ throwable -> Log.e(TAG, "Failed to fetch placement", throwable) }
)
A placement has two callbacks defined: impression
and clickthrough
. These can be invoked explicitly from Placement
object:
placement.impression()
placement.clickthrough()
or through separate methods from QubitSDK
, which expects URL to be requested:
QubitSDK.sendCallbackRequest(placement.impressionUrl)
You can get the trackingID
and deviceID
from the QubitSDK via the following methods:
QubitSDK.getTrackingId();
QubitSDK.getDeviceId();
You can specify which level of logs from the SDK to print in Logcat during initialization. Refer to Initialization for details.
The default log level is WARN
. You can turn off logs by setting SILENT
log level.