You need to set Insider callbacks after the SDK initializes. Insider callbacks, also known as "call-after" functions, help you retrieve useful data when necessary.
Callback types are as follows:
- NOTIFICATION_OPEN: The user taps a push notification or one of its action buttons. The payload includes the deep-link fields described under Sample logs.
- INAPP_BUTTON_CLICK: The user taps a button inside an In-App message.
- TEMP_STORE_CUSTOM_ACTION: An App Template custom action is triggered (e.g., a key-value, URL-scheme, or JSON action).
- INAPP_SEEN: An In-App message has been rendered to the user.
- SESSION_STARTED: A new Insider session has started.
Method Signature
public void registerInsiderCallback(InsiderCallback callback)
// Callback Types
NOTIFICATION_OPEN
TEMP_STORE_CUSTOM_ACTION
INAPP_SEEN
INAPP_BUTTON_CLICK
SESSION_STARTEDfun registerInsiderCallback(callback: InsiderCallback)
// Callback Types
NOTIFICATION_OPEN
TEMP_STORE_CUSTOM_ACTION
INAPP_SEEN
INAPP_BUTTON_CLICK
SESSION_STARTEDMethod Example
Insider.Instance.registerInsiderCallback(new InsiderCallback() {
@Override
public void doAction(JSONObject data, InsiderCallbackType callbackType) {
switch (callbackType) {
case NOTIFICATION_OPEN:
Log.d("[INSIDER]", "[NOTIFICATION_OPEN]: " + data);
break;
case INAPP_SEEN:
Log.d("[INSIDER]", "[INAPP_SEEN]: " + data);
break;
case TEMP_STORE_CUSTOM_ACTION:
Log.d("[INSIDER]", "[TEMP_STORE_CUSTOM_ACTION]: " + data);
break;
case INAPP_BUTTON_CLICK:
Log.d("[INSIDER]", "[INAPP_BUTTON_CLICK]: " + data);
break;
case SESSION_STARTED:
Log.d("[INSIDER]", "[SESSION_STARTED]: " + data);
break;
}
}
});
Insider.Instance.registerInsiderCallback { data, callbackType ->
when (callbackType) {
InsiderCallbackType.NOTIFICATION_OPEN ->
println("[INSIDER]").d("[NOTIFICATION_OPEN]: $data")
InsiderCallbackType.INAPP_SEEN -> println("[INSIDER]").d("[INAPP_BUTTON_CLICK]: $data")
InsiderCallbackType.TEMP_STORE_CUSTOM_ACTION ->
println("[INSIDER]").d("[TEMP_STORE_CUSTOM_ACTION]: $data")
InsiderCallbackType.INAPP_BUTTON_CLICK ->
println("[INSIDER]").d("[INAPP_BUTTON_CLICK]: $data")
InsiderCallbackType.SESSION_STARTED -> println("[INSIDER]").d("[SESSION_STARTED]: $data")
}
}Insider callbacks, also known as "call-after" functions, help you retrieve useful data when necessary.
For example, let's take a look at the NotificationOpen callback. Say you have a push notification without a deep link. In this case, no callback will be fired. If you have a push notification with a key-value pair deep link, the NotificationOpen callback will be fired once you open the push notification.
The following are sample logs for different deep link types in app pushes and templates:
Key-Value Pair (Push)
[INSIDER][insiderCallbackTriggered] I Callback Type: NOTIFICATION_OPEN, Data:{
"type": 0,
"data": {
"received_at": "1748433708",
"collapse_id": "0_70815_1748433707",
"source": "Insider",
"camp_type": "0",
"key": "value",
"sound": "Default",
"camp_id": "70815",
"isSetPush": true,
"variant_id": "89159",
"sent_at": "1748433707"
}
}
Key-Value Pair (Message Action Button)
[INSIDER][insiderCallbackTriggered] Callback Type: NOTIFICATION_OPEN
{"type": 0,
"data": {
"buttonId": 0,
"source": "Insider",
"key": "value",
"buttonText": "key value pair button1"
}
}
Internal URL (Push)
[INSIDER][insiderCallbackTriggered] I Callback Type: NOTIFICATION_OPEN, Data:{
"type": 0,
"data": {
"received_at": "1748433708",
"collapse_id": "0_70815_1748433707",
"source": "Insider",
"camp_type": "0",
"ins_dl_internal": "https://www.test.com",
"sound": "Default",
"camp_id": "70815",
"isSetPush": true,
"variant_id": "89159",
"sent_at": "1748433707"
}
}
Internal URL (Message Action Button)
[INSIDER][insiderCallbackTriggered] Callback Type: NOTIFICATION_OPEN
{
"type": 0,
"data": {
"buttonId": 0,
"source": "Insider",
"buttonText": "test internal",
"ins_dl_internal": "https://www.test.com"
}
}
External URL (Push)
[INSIDER][insiderCallbackTriggered] I Callback Type: NOTIFICATION_OPEN, Data:{
"type": 0,
"data": {
"received_at": "1748433708",
"collapse_id": "0_70815_1748433707",
"source": "Insider",
"camp_type": "0",
"ins_dl_external": "https://www.test.com",
"sound": "Default",
"camp_id": "70815",
"isSetPush": true,
"variant_id": "89159",
"sent_at": "1748433707"
}
}
External URL (Message Action Button)
[INSIDER][insiderCallbackTriggered] Callback Type: NOTIFICATION_OPEN
{
"type": 0,
"data": {
"ins_dl_external": "https://www.test.com",
"buttonId": 0,
"source": "Insider",
"buttonText": "test external"
}
}
JSON (Push)
[INSIDER][insiderCallbackTriggered] I Callback Type: NOTIFICATION_OPEN, Data:{
"type": 0,
"data": {
"received_at": "1748433708",
"collapse_id": "0_70815_1748433707",
"source": "Insider",
"camp_type": "0",
"ins_dl_json": '{"test":"test2"}',
"sound": "Default",
"camp_id": "70815",
"isSetPush": true,
"variant_id": "89159",
"sent_at": "1748433707"
}
}
JSON (Message Action Button)
[INSIDER][insiderCallbackTriggered] Callback Type: NOTIFICATION_OPEN
{
"type": 0,
"data": {
"buttonId": 0,
"source": "Insider",
"buttonText": "test json",
"ins_dl_json": '{"test":"test2"}'
}
}
URL Scheme (Push)
[INSIDER][insiderCallbackTriggered] I Callback Type: NOTIFICATION_OPEN, Data:{
"type": 0,
"data": {
"received_at": "1748433708",
"collapse_id": "0_70815_1748433707",
"source": "Insider",
"camp_type": "0",
"ins_dl_url_scheme": "test",
"sound": "Default",
"camp_id": "70815",
"isSetPush": true,
"variant_id": "89159",
"sent_at": "1748433707"
}
}
URL Scheme (Message Action Button)
[INSIDER][insiderCallbackTriggered] Callback Type: NOTIFICATION_OPEN
{
"type": 0,
"data": {
"buttonId": 0,
"source": "Insider",
"buttonText": "test url scheme",
"ins_dl_url_scheme": 'test'
}
}
Key-Value Pair (App template)
[INSIDER][CALLBACK][InsiderCallbackTypeTempStoreCustomAction]: {
data = {
InsiderDeepLinkKey = InsiderDeepLinkValue;
};
type = 4;
}
URL Scheme (App template)
[INSIDER][DEBUG][processTemplateStoreURL]: {
action = deepLink;
dismiss = 12;
redirection = "https://academy.useinsider.com";
}
JSON (App template)
[INSIDER][DEBUG][processTemplateStoreURL]: {
action = deepLink;
custom = {
json = "{\"insider_key\": \"insider_value\"}";
};
dismiss = 12;
}