Callbacks
Callbacks are useful for understanding the lifecycle stages of WebEngage events. All WebEngage callbacks are called on the main thread.
Push Message Callbacks
Import WebEngageXamariniOS
class in your AppDelegate
file and implement IWEGAppDelegate
interface.
...
using WebEngageXamariniOS;
namespace YourNamespace
{
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate, IWEGAppDelegate
{
...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
...
WebEngage.SharedInstance().Application(application, launchOptions, true);
return true;
}
// Push message callbacks go here
}
}
Push Notification Clicked
This callback is invoked when the user clicks the primary call to action of the push notification.
[Export("WEGHandleDeeplink:userData:")]
public void WEGHandleDeeplink(string deeplink, NSDictionary data)
{
...
}
Note that WebEngage Xamarin.iOS SDK does not require APIs to pass the device registration token (similar to
WebEngage.get().setRegistrationID(registrationId)
in Android) or APNs message (similar toWebEngage.get().receive(bundle)
in Android). The Xamarin.iOS SDK handles those automatically by intercepting standard callbacks for the purpose.
In-app message callbacks
In order to use In-app notification callbacks, follow the below steps.
Step 1: Create WebEngage in-app notification callback delegate class which implements the WEGInAppNotificationProtocol
as shown below.
using System;
using Foundation;
using WebEngageXamariniOS;
namespace YourNamespace
{
public class InAppNotificationDelegate : WEGInAppNotificationProtocol
{
public override NSMutableDictionary NotificationPrepared(NSMutableDictionary inAppNotificationData, bool stopRendering)
{
...
return inAppNotificationData;
}
public override void NotificationShown(NSMutableDictionary inAppNotificationData)
{
...
}
public override void Notification(NSMutableDictionary inAppNotificationData, string actionId)
{
...
}
public override void NotificationDismissed(NSMutableDictionary inAppNotificationData)
{
...
}
}
}
Step 2: Register the in-app notification callback delegate in your AppDelegate
while initializing WebEngage SDK as shown below.
...
using WebEngageXamariniOS;
namespace YourNamespace
{
...
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
...
private static InAppNotificationDelegate inAppNotificationDelegate;
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
...
inAppNotificationDelegate = new InAppNotificationDelegate();
WebEngage.SharedInstance().Application(application, launchOptions, inAppNotificationDelegate, true);
return true;
}
...
}
...
}
In-App Notification Prepared
This callback gets triggered before the notification is shown to your users. It allows you to customize the UI, colors, CTAs (buttons) and content of the In-app message received from WebEngage before displaying it.
- Assigning the value of
stopRendering
totrue
will not render the notification for your users.
public override NSMutableDictionary NotificationPrepared(NSMutableDictionary inAppNotificationData, bool stopRendering)
{
...
return inAppNotificationData;
}
In-App Notification Shown
This callback gets triggered after the notification is shown.
public override void NotificationShown(NSMutableDictionary inAppNotificationData)
{
...
}
In-App Notification Clicked
This callback gets triggered when the user clicks the call to action button on the notification. The ID of the button clicked is passed as the second parameter. You can look up the button IDs in the inAppNotificationData
dictionary.
public override void Notification(NSMutableDictionary inAppNotificationData, string actionId)
{
...
}
In-App Notification Dismissed
This callback gets triggered when the user dismisses the notification.
public override void NotificationDismissed(NSMutableDictionary inAppNotificationData)
{
...
}
Notification Callback Data (NSMutableDictionary* inAppNotificationData
)
NSMutableDictionary* inAppNotificationData
)Data received from in-app callbacks adheres to the below format.
{
"canClose": true,
"layoutAttributes": {
"posX": 0,
"posY": 0,
"TITLE_ALIGN": "CENTER",
"image_url": "http://s3-ap-southeast-1.amazonaws.com/wk-test-static-files/76a9d10/a6b6e04d-43e9-4c09-b15f-8acffbcfcc1a.jpg",
"TITLE_WRAP": false,
"wvWidth": 100,
"type": "BLOCKING",
"wvHeight": 100,
"fullScreen": false
},
"showTitle": true,
"notificationEncId": "~13ssb59",
"description": null,
"canMinimize": true,
"id": "173046a46",
"isActive": true,
"title": "My Title",
"actions": [{
"actionText": "Puma",
"actionEId": "~64c71b",
"actionTarget": "_top",
"type": "DEEP_LINK",
"actionLink": "webengage://com.webengage.inapptest/start_activity/com.webengage.inapptest.Activity1",
"isPrime": true
}],
"config": {
"titleColor": "#ffffff",
"c2aBackgroundColor": "#411ad3",
"c2aTextFont": "Open Sans",
"titleFont": "Open Sans",
"c2aTextColor": "#f7f2f2",
"hideLogo": false
},
"direction": "ltr"
}
State Change Callbacks
State change callbacks are triggered whenever the state of the SDK changes.
Import WebEngage
class in your AppDelegate.h file and implement WEGAppDelegate
interface.
#import <WebEngage/WebEngage.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate,WEGAppDelegate>
...
using WebEngageXamariniOS;
namespace YourNamespace
{
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate, IWEGAppDelegate
{
...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
...
WebEngage.SharedInstance().Application(application, launchOptions, true);
return true;
}
// State change callbacks go here
}
}
Anonymous ID Changed
This callback is invoked when the Anonymous ID of the user is changed. It returns the new anonymous ID and reason for which it is changed.
[Export("didReceiveAnonymousID:forReason:")]
public void DidReceiveAnonymousID(string anonymousID, WEGReason reason)
{
...
}
Please feel free to drop in a few lines at [email protected] in case you have any further queries. We're always just an email away!
Updated almost 5 years ago