Android SDK Reference
Complete API reference for the PushEngage Android SDK. For setup and installation, see the Android Quickstart.
The SDK supports Java and Kotlin. Android API 21 (Android 5.0) or higher is required.
Notification Permission
requestNotificationPermission
Requests notification permission from the user. For Android 13 (API 33) and above, this will show the system permission dialog. For older versions, the permission is automatically granted and the callback will be invoked with granted=true.
This method works with both ComponentActivity (Compose) and FragmentActivity. When permission is granted, the SDK automatically calls PushEngage.subscribe() for you, so you don't need to call it manually in the callback.
Syntax
requestNotificationPermission(ComponentActivity activity, PushEngagePermissionCallback callback)
Parameters
activity: The ComponentActivity (works with both Compose and traditional Activities)
callback: The PushEngagePermissionCallback callback to be invoked with the permission result
Usage
- Java
- Kotlin
// Works with ComponentActivity (Compose)
PushEngage.requestNotificationPermission(this, new PushEngagePermissionCallback() {
@Override
public void onPermissionResult(boolean granted, Error error) {
if (granted) {
Log.d("Permission", "User is now subscribed!");
} else {
// Handle permission denied
Log.d("Permission", "Permission denied: " + error.getMessage());
}
}
});
// Works with ComponentActivity (Compose)
PushEngage.requestNotificationPermission(this, object : PushEngagePermissionCallback {
override fun onPermissionResult(granted: Boolean, error: Error?) {
if (granted) {
Log.d("Permission", "User is now subscribed!")
} else {
// Handle permission denied
Log.d("Permission", "Permission denied: ${error?.message}")
}
}
})
getNotificationPermissionStatus
Get the current notification permission status for the application. This method returns the permission status synchronously as a string.
Syntax
getNotificationPermissionStatus()
Returns
A String indicating the current notification permission state:
"granted": The application is authorized to post user notifications"denied": The application is not authorized to post user notifications
Usage
- Java
- Kotlin
String permissionStatus = PushEngage.getNotificationPermissionStatus();
switch (permissionStatus) {
case "granted":
Log.d("Permission", "Notifications are allowed");
break;
case "denied":
Log.d("Permission", "Notifications are denied");
break;
default:
Log.d("Permission", "Unknown permission status");
break;
}
val permissionStatus = PushEngage.getNotificationPermissionStatus()
when (permissionStatus) {
"granted" -> Log.d("Permission", "Notifications are allowed")
"denied" -> Log.d("Permission", "Notifications are denied")
else -> Log.d("Permission", "Unknown permission status")
}
Subscription
subscribe
Subscribe the user to push notifications. This method checks the current permission status and subscription state to determine the appropriate action. If notification permission is not granted, it will automatically request permission first. The callback will invoke onSuccess() when the user successfully subscribes or onFailure() if the subscription fails (including cases where permission is denied by the user).
Syntax
subscribe(ComponentActivity activity, PushEngageResponseCallback callback)
Parameters
activity: The ComponentActivity required for permission handling (works with both Compose and traditional Activities)
callback: The callback to be invoked with the subscribe result. Returns success or failure of the subscription operation.
Usage
- Java
- Kotlin
PushEngage.subscribe(this, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object result) {
Log.d("Subscription", "User subscribed successfully");
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Log.e("Subscription", "Failed to subscribe: " + errorMessage);
}
});
PushEngage.subscribe(this, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Log.d("Subscription", "User subscribed successfully")
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Log.e("Subscription", "Failed to subscribe: $errorMessage")
}
})
unsubscribe
Unsubscribe the user from push notifications. This stops the user from receiving notifications but keeps their profile and preferences in the system. The user can be re-subscribed later using the subscribe() method.
Syntax
unsubscribe(PushEngageResponseCallback callback)
Parameters
callback: The callback to be invoked with the unsubscribe result.
result: A boolean indicating the unsubscription result.- Will be
trueif the unsubscription was successful. - Will be
falseif the unsubscription operation failed.
- Will be
Usage
- Java
- Kotlin
PushEngage.unsubscribe(new PushEngageResponseCallback() {
@Override
public void onSuccess(Object result) {
Log.d("Subscription", "User unsubscribed successfully");
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Log.e("Subscription", "Failed to unsubscribe: " + errorMessage);
}
});
PushEngage.unsubscribe(object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Log.d("Subscription", "User unsubscribed successfully")
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Log.e("Subscription", "Failed to unsubscribe: $errorMessage")
}
})
getSubscriptionStatus
Check whether the user is currently subscribed to push notifications.
Syntax
getSubscriptionStatus(PushEngageResponseCallback callback)
Parameters
callback: The callback to be invoked with the subscription status result.
result: A boolean indicating the user's subscription status.- Will be
trueif user is subscribed to push notifications. - Will be
falseif user is not subscribed (unsubscribed or never subscribed).
- Will be
Usage
- Java
- Kotlin
PushEngage.getSubscriptionStatus(new PushEngageResponseCallback() {
@Override
public void onSuccess(Object result) {
Boolean isSubscribed = (Boolean) result;
if (isSubscribed) {
Log.d("Subscription", "User is subscribed");
} else {
Log.d("Subscription", "User is not subscribed");
}
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Log.e("Subscription", "Error checking subscription: " + errorMessage);
}
});
PushEngage.getSubscriptionStatus(object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
val isSubscribed = responseObject as? Boolean ?: false
if (isSubscribed) {
Log.d("Subscription", "User is subscribed")
} else {
Log.d("Subscription", "User is not subscribed")
}
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Log.e("Subscription", "Error checking subscription: $errorMessage")
}
})
getSubscriptionNotificationStatus
Check whether the user can actually receive push notifications by verifying both subscription status and notification permission. The user can receive notifications only if they are subscribed AND the app has notification permission granted.
Syntax
getSubscriptionNotificationStatus(PushEngageResponseCallback callback)
Parameters
callback: The callback to be invoked with the subscription notification status.
result: A boolean indicating whether the user can receive notifications.- Will be
trueif user can receive notifications (subscribed AND permission granted). - Will be
falseif user cannot receive notifications (not subscribed or permission denied).
- Will be
Usage
- Java
- Kotlin
PushEngage.getSubscriptionNotificationStatus(new PushEngageResponseCallback() {
@Override
public void onSuccess(Object result) {
Boolean canReceiveNotifications = (Boolean) result;
if (canReceiveNotifications) {
Log.d("Subscription", "User can receive notifications");
} else {
Log.d("Subscription", "User cannot receive notifications");
}
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Log.e("Subscription", "Error checking notification status: " + errorMessage);
}
});
PushEngage.getSubscriptionNotificationStatus(object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
val canReceiveNotifications = responseObject as? Boolean ?: false
if (canReceiveNotifications) {
Log.d("Subscription", "User can receive notifications")
} else {
Log.d("Subscription", "User cannot receive notifications")
}
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Log.e("Subscription", "Error checking notification status: $errorMessage")
}
})
Associate Profile ID
Profile IDs serve as unique identifiers for your subscribers, enabling you to recognize them across multiple devices. Each subscriber can be assigned just one profile ID. This ID should be a string, and you have the flexibility to use any value, such as an email or phone number.
getSubscriberId
Retrieve the unique subscriber ID for a user. PushEngage generates this ID for every user based on their subscription data. Sometimes, this ID is referred to as the 'subscriber_hash'. The subscriber ID remains consistent unless there's a change in the user's subscription. If the user is not subscribed, it will return null.
Syntax
getSubscriberId(PushEngageResponseCallback callback)
Parameters
callback: The callback to be invoked with the subscriber ID result.
subscriberId: The unique subscriber ID for the user.- Will be a
Stringcontaining the subscriber ID if the user is subscribed. - Will be
nullif the user is not subscribed.
- Will be a
Usage
- Java
- Kotlin
PushEngage.getSubscriberId(new PushEngageResponseCallback() {
@Override
public void onSuccess(Object result) {
String subscriberId = (String) result;
if (subscriberId != null) {
Log.d("Subscriber", "Subscriber ID: " + subscriberId);
} else {
Log.d("Subscriber", "User is not subscribed");
}
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Log.e("Subscriber", "Error getting subscriber ID: " + errorMessage);
}
});
PushEngage.getSubscriberId(object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
val subscriberId = responseObject as? String
if (subscriberId != null) {
Log.d("Subscriber", "Subscriber ID: $subscriberId")
} else {
Log.d("Subscriber", "User is not subscribed")
}
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Log.e("Subscriber", "Error getting subscriber ID: $errorMessage")
}
})
addProfileId
This method allows you to set a profile ID for the current subscriber. If a profile ID already exists, it will be replaced with the new value.
Syntax
addProfileId(String profileId, PushEngageResponseCallback callback)
Parameters
profileId: A String representing the profile ID to be associated with the subscriber.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
PushEngage.addProfileId("your_id", new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
PushEngage.addProfileId("your_id", object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
Subscriber Details
getSubscriberDetails
This method retrieves subscriber details based on a provided list of strings, which can include city, state, country, device, device type, segments, etc.
Syntax
getSubscriberDetails(List<String> values, PushEngageResponseCallback callback)
Parameters
values: A list of strings that can contain any values from PushEngage.SubscriberFields.
callback: An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
List<String> subscriberDetailsList = new ArrayList<>();
subscriberDetailsList.add(PushEngage.SubscriberFields.City);
subscriberDetailsList.add(PushEngage.SubscriberFields.State);
PushEngage.getSubscriberDetails(subscriberDetailsList, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the failure event.
}
});
val subscriberDetailsList: MutableList<String> = ArrayList()
subscriberDetailsList.add(PushEngage.SubscriberFields.City)
subscriberDetailsList.add(PushEngage.SubscriberFields.State)
PushEngage.getSubscriberDetails(
subscriberDetailsList,
object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
Available Fields
| Field | Type | Description |
|---|---|---|
city | string | Subscriber's city |
state | string | Subscriber's state or region |
country | string | Subscriber's country |
device | string | Device name |
device_type | string | Device type (e.g., mobile, tablet) |
user_agent | string | App user agent string |
host | string | Host identifier |
timezone | string | Subscriber's timezone |
has_unsubscribed | boolean | Whether the subscriber has unsubscribed |
ts_created | string | ISO 8601 timestamp of subscription creation |
segments | array | Segment IDs the subscriber belongs to |
Segments
Segments are used to group subscribers so that you can send personalized notifications. Segments can be created based on attributes, categories, and more.
addSegment
This method enables you to add the current subscriber to segments.
Syntax
addSegment(List<String> segmentId, PushEngageResponseCallback callback)
Parameters
segmentId: A list of segment IDs to be added.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
List<String> segmentList = new ArrayList<String>();
segmentList.add("sports");
PushEngage.addSegment(segmentList, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
val segmentList: MutableList<String> = ArrayList()
segmentList.add("sports")
PushEngage.addSegment(segmentList, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
addDynamicSegment
This method enables you to add the current subscriber to a segment for a specified duration, measured in days. After this period, the segment will be automatically removed from the subscriber.
Syntax
addDynamicSegment(List<AddDynamicSegmentRequest.Segment> segments, PushEngageResponseCallback callback)
Parameters
segments: A list of segment objects representing dynamic segments to be added.
- Contains the segment data to be associated with the user.
callback (optional): An interface designed as a callback to handle API responses asynchronously.
- Called when the operation completes with success or failure information.
Usage
- Java
- Kotlin
AddDynamicSegmentRequest addDynamicSegmentRequest = new AddDynamicSegmentRequest();
List<AddDynamicSegmentRequest.Segment> segments = new ArrayList<>();
AddDynamicSegmentRequest.Segment segment = addDynamicSegmentRequest.new Segment("sports", 5);
segments.add(segment);
PushEngage.addDynamicSegment(segments, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
val addDynamicSegmentRequest = AddDynamicSegmentRequest()
val segments: MutableList<AddDynamicSegmentRequest.Segment> = ArrayList()
val segment = addDynamicSegmentRequest.Segment("sports", 5)
segments.add(segment)
PushEngage.addDynamicSegment(segments, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
removeSegment
This method allows you to remove the current subscriber from segments.
Syntax
removeSegment(List<String> segmentId, PushEngageResponseCallback callback)
Parameters
segmentId: A list of segment IDs to be removed.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
List<String> segmentList = new ArrayList<String>();
segmentList.add("sports");
PushEngage.removeSegment(segmentList, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
val segmentList: MutableList<String> = ArrayList()
segmentList.add("sports")
PushEngage.removeSegment(segmentList, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
Attributes
Attributes are key-value pairs that allow you to store additional information about your subscribers. You can utilize attributes to segment your subscribers and send personalized notifications.
addSubscriberAttributes
Use this method to add or update attributes for a subscriber. If an attribute with the specified key already exists, the existing value will be replaced.
Syntax
addSubscriberAttributes(JSONObject obj, PushEngageResponseCallback callback)
Parameters
obj: A JSONObject containing the subscriber attributes to be added.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("age", "25");
jsonObject.put("height", "6.1");
PushEngage.addSubscriberAttributes(jsonObject, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
} catch (JSONException e) {
e.printStackTrace();
}
val jsonObject = JSONObject()
jsonObject.put("age", "25")
jsonObject.put("height", "6.1")
PushEngage.addSubscriberAttributes(
jsonObject,
object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
setSubscriberAttributes
This method allows you to set attributes for a subscriber, replacing any previously associated attributes. Use this method when you need to entirely reset the attributes with new values.
Syntax
setSubscriberAttributes(JSONObject obj, PushEngageResponseCallback callback)
Parameters
obj: A JSONObject containing the updated subscriber attributes.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("age", "25");
jsonObject.put("height", "6.1");
PushEngage.setSubscriberAttributes(jsonObject, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
} catch (JSONException e) {
e.printStackTrace();
}
val jsonObject = JSONObject()
jsonObject.put("age", "25")
jsonObject.put("height", "6.1")
PushEngage.setSubscriberAttributes(
jsonObject,
object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
getSubscriberAttributes
Retrieve the attributes associated with the current subscriber using this method.
Syntax
getSubscriberAttributes(PushEngageResponseCallback callback)
Parameters
callback: An interface designed as a callback to handle API responses asynchronously.
result: The subscriber attributes data.- Will contain the user's attributes if successfully retrieved.
- Will be
nullif no attributes are found or retrieval fails.
Usage
- Java
- Kotlin
PushEngage.getSubscriberAttributes(new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
// Handle the Failure event.
}
});
PushEngage.getSubscriberAttributes(object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
deleteSubscriberAttributes
This method allows you to remove one or more attributes from the current subscriber. Provide an array of attribute names you wish to remove. Passing an empty array will result in the removal of all the subscriber's attributes.
Syntax
deleteSubscriberAttributes(List<String> values, PushEngageResponseCallback callback)
Parameters
values: A List<String> containing attribute names to be deleted.
callback(optional): An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
List<String> attributeList = new ArrayList<>();
attributeList.add("age");
attributeList.add("height");
PushEngage.deleteSubscriberAttributes(attributeList, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
//Handle the Success event.
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
//Handle the Failure event.
}
});
val attributeList: MutableList<String> = ArrayList()
attributeList.add("age")
attributeList.add("height")
PushEngage.deleteSubscriberAttributes(attributeList, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
//Handle the Success event.
}
override fun onFailure(errorCode: Int, errorMessage: String) {
//Handle the Failure event.
}
})
Automated Notifications
Automated notifications include all types of triggered campaigns, such as cart abandonment, price drop, back in stock, and browse abandonment. By default, automated notifications are enabled for all subscribers.
automatedNotification
This method allows you to enable/disable automated notifications for the current subscriber.
Syntax
automatedNotification(TriggerStatusType status, PushEngageResponseCallback callback)
Parameters
status: The trigger status type indicating the status of the trigger campaign.
callback: An interface designed as a callback to handle API responses asynchronously.
Usage
Enable Automated Notifications
- Java
- Kotlin
PushEngage.automatedNotification(PushEngage.TriggerStatusType.enabled, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(TriggerCampaignActivity.this, "Trigger Enabled Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(TriggerCampaignActivity.this, "Trigger Enabled Failed", Toast.LENGTH_LONG).show();
}
});
PushEngage.automatedNotification(PushEngage.TriggerStatusType.enabled, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@TriggerCampaignActivity, "Trigger Enabled Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@TriggerCampaignActivity, "Trigger Enabled Failed", Toast.LENGTH_LONG).show()
}
})
Disable Automated Notifications
- Java
- Kotlin
PushEngage.automatedNotification(PushEngage.TriggerStatusType.disabled, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(TriggerCampaignActivity.this, "Trigger Disabled Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(TriggerCampaignActivity.this, "Trigger Disabled Failed", Toast.LENGTH_LONG).show();
}
});
PushEngage.automatedNotification(PushEngage.TriggerStatusType.disabled, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@TriggerCampaignActivity, "Trigger Disabled Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@TriggerCampaignActivity, "Trigger Disabled Failed", Toast.LENGTH_LONG).show()
}
})
Triggered Campaigns
sendTriggerEvent
Detect your visitor's behavior to send automated push notifications to the right person at the right time.
Syntax
sendTriggerEvent(TriggerCampaign trigger, PushEngageResponseCallback callback)
Parameters
trigger: The TriggerCampaign object representing the campaign event to be triggered.
callback: An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
Map<String, String> dataMap = new HashMap<>();
dataMap.put("custom_key", "custom_value");
TriggerCampaign triggerCampaign = new TriggerCampaign(
"name_of_campaign",
"name_of_event",
"your_reference_id", // referenceId (optional)
null, // profileId (optional)
dataMap // data (optional)
);
PushEngage.sendTriggerEvent(triggerCampaign, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(TriggerEntryActivity.this, "Send Trigger Alert Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(TriggerEntryActivity.this, errorMessage != null ? errorMessage : "Error occurred", Toast.LENGTH_LONG).show();
}
});
val dataMap: MutableMap<String, String> = mutableMapOf()
dataMap["custom_key"] = "custom_value"
val triggerCampaign = TriggerCampaign(
campaignName = "name_of_campaign",
eventName = "name_of_event",
referenceId = "your_reference_id", // optional
data = dataMap // optional
)
PushEngage.sendTriggerEvent(triggerCampaign, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@TriggerEntryActivity, "Send Trigger Alert Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@TriggerEntryActivity, errorMessage.toString(), Toast.LENGTH_LONG).show()
}
})
addAlert
Re-engage your customers and increase conversion using Price Drop Alert Campaigns and Inventory Alert Campaigns.
Syntax
addAlert(TriggerAlert alert, PushEngageResponseCallback callback)
Parameters
alert: A TriggerAlert object describing the alert. All positional fields must be provided when constructing from Java; Kotlin callers may use named parameters and omit optional fields.
| Field | Type | Required | Description |
|---|---|---|---|
type | PushEngage.TriggerAlertType | Yes | Alert type: priceDrop or inventory |
productId | String | Yes | Unique identifier for the product |
link | String | Yes | URL to the product page |
price | Double | Yes | Current price of the product |
variantId | String? | No | Product variant identifier |
expiryTimestamp | Date? | No | When the alert expires |
alertPrice | Double? | No | Target price that triggers the alert. Defaults to current price if not set. |
availability | PushEngage.TriggerAlertAvailabilityType? | No | inStock or outOfStock. Defaults to inStock for priceDrop alerts and outOfStock for inventory alerts. |
profileId | String? | No | Associate the alert with a specific subscriber profile |
mrp | Double? | No | Maximum retail price of the product |
data | Map<String, String>? | No | Custom key-value pairs to attach to the alert |
callback: An interface designed as a callback to handle API responses asynchronously.
Usage
Price Drop
- Java
- Kotlin
Map<String, String> dataMap = new HashMap<>();
dataMap.put("custom_key", "custom_value");
TriggerAlert triggerAlert = new TriggerAlert(
PushEngage.TriggerAlertType.priceDrop, // type
"product_id", // productId
"product_link", // link
100.0, // price
"product_variant_id", // variantId (optional)
null, // expiryTimestamp: Date (optional)
102.0, // alertPrice (optional)
PushEngage.TriggerAlertAvailabilityType.inStock, // availability (optional)
null, // profileId (optional)
null, // mrp (optional)
dataMap // data (optional)
);
PushEngage.addAlert(triggerAlert, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(AddAlertActivity.this, "Add Alert Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(AddAlertActivity.this, errorMessage, Toast.LENGTH_LONG).show();
}
});
val dataMap: MutableMap<String, String> = mutableMapOf()
dataMap["custom_key"] = "custom_value"
val triggerAlert = TriggerAlert(
type = PushEngage.TriggerAlertType.priceDrop,
productId = "product_id",
link = "product_link",
price = 100.0,
variantId = "product_variant_id", // optional
alertPrice = 102.0, // optional
availability = PushEngage.TriggerAlertAvailabilityType.inStock, // optional
data = dataMap // optional
)
PushEngage.addAlert(triggerAlert, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@AddAlertActivity, "Add Alert Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@AddAlertActivity, errorMessage, Toast.LENGTH_LONG).show()
}
})
Back in Stock Alert
- Java
- Kotlin
Map<String, String> dataMap = new HashMap<>();
dataMap.put("custom_key", "custom_value");
TriggerAlert triggerAlert = new TriggerAlert(
PushEngage.TriggerAlertType.inventory, // type
"product_id", // productId
"product_link", // link
100.0, // price
"product_variant_id", // variantId (optional)
null, // expiryTimestamp: Date (optional)
null, // alertPrice (optional)
PushEngage.TriggerAlertAvailabilityType.outOfStock, // availability (optional, default for inventory)
null, // profileId (optional)
null, // mrp (optional)
dataMap // data (optional)
);
PushEngage.addAlert(triggerAlert, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(AddAlertActivity.this, "Add Alert Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(AddAlertActivity.this, errorMessage, Toast.LENGTH_LONG).show();
}
});
val dataMap: MutableMap<String, String> = mutableMapOf()
dataMap["custom_key"] = "custom_value"
val triggerAlert = TriggerAlert(
type = PushEngage.TriggerAlertType.inventory,
productId = "product_id",
link = "product_link",
price = 100.0,
variantId = "product_variant_id", // optional
availability = PushEngage.TriggerAlertAvailabilityType.outOfStock, // optional, default for inventory
data = dataMap // optional
)
PushEngage.addAlert(triggerAlert, object : PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@AddAlertActivity, "Add Alert Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@AddAlertActivity, errorMessage, Toast.LENGTH_LONG).show()
}
})
Goal Tracking
Goal Tracking will help you assign conversion goals & value to your notification campaigns. You can set up a default goal and have it integrated for all your campaigns.
sendGoal
Syntax
sendGoal(Goal goal, PushEngageResponseCallback callback)
Parameters
goal: Goal object representing the goal to be tracked.
callback: An interface designed as a callback to handle API responses asynchronously.
Usage
- Java
- Kotlin
Goal goal = new Goal("name_of_goal", 1, 10.0);
PushEngage.sendGoal(goal, new PushEngageResponseCallback() {
@Override
public void onSuccess(Object responseObject) {
Toast.makeText(GoalActivity.this, "Goal Added Successfully", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Integer errorCode, String errorMessage) {
Toast.makeText(GoalActivity.this, "Failure", Toast.LENGTH_LONG).show();
}
});
val goal = Goal("name_of_goal", 1, 10.0)
PushEngage.sendGoal(goal, object: PushEngageResponseCallback {
override fun onSuccess(responseObject: Any?) {
Toast.makeText(this@GoalActivity, "Goal Added Successfully", Toast.LENGTH_LONG).show()
}
override fun onFailure(errorCode: Int?, errorMessage: String?) {
Toast.makeText(this@GoalActivity, "Failure", Toast.LENGTH_LONG).show()
}
})
Utilities
getSdkVersion
Retrieves the current version of the PushEngage Android SDK, returning a string that represents the SDK's current version.
Syntax
getSdkVersion()
Returns
A String representing the current version of the PushEngage Android SDK.
Usage
- Java
- Kotlin
PushEngage.getSdkVersion();
PushEngage.getSdkVersion()
setSmallIconResource
Sets the resource name of the small icon used for notifications. The small icon appears in the status bar when a notification is displayed.
Syntax
setSmallIconResource(String resourceName)
Parameters
resourceName: A string representing the resource name of the small icon.
Usage
- Java
- Kotlin
String resourceName = "your_small_icon_name";
PushEngage.setSmallIconResource(resourceName);
val resourceName = "your_small_icon_name"
PushEngage.setSmallIconResource(resourceName)
It is recommended to set a valid resource name to ensure proper display of notifications. If an invalid resource name is provided, the default bell icon specified by the PushEngage library will be used.
enableLogging
Enables or disables verbose debug logging for the SDK. When enabled, the SDK prints detailed logs to Logcat that are useful for diagnosing integration issues.
Disable logging in production builds to avoid leaking internal SDK state to device logs.
Syntax
enableLogging(boolean shouldEnable)
Parameters
shouldEnable: Pass true to turn on debug logging, false to turn it off.
Usage
- Java
- Kotlin
// Enable during development
PushEngage.enableLogging(true);
// Disable for production
PushEngage.enableLogging(false);
// Enable during development
PushEngage.enableLogging(true)
// Disable for production
PushEngage.enableLogging(false)