https://github.com/webengage/xamarin-android-sample
Sample Xamarin Android project.
https://github.com/webengage/xamarin-android-sample
Last synced: about 1 year ago
JSON representation
Sample Xamarin Android project.
- Host: GitHub
- URL: https://github.com/webengage/xamarin-android-sample
- Owner: WebEngage
- Created: 2018-08-03T01:59:22.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-02-27T08:45:03.000Z (over 6 years ago)
- Last Synced: 2025-01-14T18:10:13.983Z (over 1 year ago)
- Language: C#
- Size: 3.61 MB
- Stars: 2
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WebEngage Xamarin Android Sample
This is Xamarin Android sample application to demonstrate usage of Xamarin binding library of WebEngage Android SDK.
## Installation
1. Download [WebEngage Xamarin Android Library (v0.4.0.0)](https://s3-us-west-2.amazonaws.com/webengage-sdk/xamarin/android/0.4.0.0/WebEngageXamarinAndroid.dll).
2. To consume this downloaded .DLL in your Xamarin.Android app, you must first add a reference to your Xamarin.Android project by right-clicking on the References node of your project and select Add Reference.
## Initialization
Initialize WebEngage SDK with your license code from onCreate callback of your Application class as shown below.
```csharp
using Com.Webengage.Sdk.Android;
...
[Application]
public class YourApplication : Application
{
...
public override void OnCreate()
{
base.OnCreate();
WebEngageConfig config = new WebEngageConfig.Builder()
.SetWebEngageKey(YOUR-LICENSE-CODE)
.SetDebugMode(true)
.Build();
RegisterActivityLifecycleCallbacks(new WebEngageActivityLifeCycleCallbacks(this, config));
...
}
}
```
**Note:** Replace YOUR-LICENSE-CODE with your own license code.
## Attribution Tracking
In order to track 'App Installed' events and install-referrer URLs, follow the steps below.
1. Make sure that you are using WebEngage Xamarin Android Library version 0.4.0.0 or above.
2. Download the latest version of [Android Install Referrer library](https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer).
3. Add the aar file to your Xamarin.Android project, for example at location `YourProject/lib/installreferrer-1.1.1.aar`.
4. Set Build Action for the installreferrer aar to AndroidAarLibrary.
## Tracking Users
1. Login and logout users as shown below.
```csharp
using Com.Webengage.Sdk.Android;
...
// User login
WebEngage.Get().User().Login("userId");
// User logout
WebEngage.Get().User().Logout();
```
2. Set system user attributes as shown below.
```csharp
using Com.Webengage.Sdk.Android;
using Com.Webengage.Sdk.Android.Utils;
...
// Set user first name
WebEngage.Get().User().SetFirstName("John");
// Set user last name
WebEngage.Get().User().SetLastName("Doe");
// Set user email
WebEngage.Get().User().SetEmail("john.doe@email.com");
// Set user gender
WebEngage.Get().User().SetGender(Gender.Male);
// Set user birth-date
WebEngage.Get().User().SetBirthDate("1994-04-29");
// Set user company
WebEngage.Get().User().SetCompany("Google");
```
3. Set custom user attributes as shown below.
```csharp
using Com.Webengage.Sdk.Android;
using Java.Lang;
...
// Set custom user attribute
WebEngage.Get().User().SetAttribute("age", (Java.Lang.Integer)23);
WebEngage.Get().User().SetAttribute("premium", (Boolean)true);
// Set complex custom user attributes
IDictionary customAttributes = new Dictionary();
customAttributes.Add("Twitter Email", "john.twitter@mail.com");
customAttributes.Add("Subscribed", true);
WebEngage.Get().User().SetAttributes(customAttributes);
```
**Note:** WebEngage SDK only supports the following data-types: string, Java.Lang.Boolean, Java.Util.Date, Java.Lang.Number, IList and IDictionary.
4. Delete custom user attributes as shown below.
```csharp
using Com.Webengage.Sdk.Android;
...
// Delete age attribute
WebEngage.Get().User().DeleteAttribute("age");
```
## Tracking Events
Track custom events as shown below.
```csharp
using Com.Webengage.Sdk.Android;
using Java.Lang;
...
// Track simple event
WebEngage.Get().Analytics().Track("Searched");
// Track event with attributes
IDictionary attributes = new Dictionary();
attributes.Add("id", "~123");
attributes.Add("price", 100);
attributes.Add("discount", true);
WebEngage.Get().Analytics().Track("Added to cart", attributes);
// Track events with reporting priority
WebEngage.Get().Analytics().Track("Added to cart", attributes, new Analytics.Options().SetHighReportingPriority(true));
```
**Note:** WebEngage SDK only supports the following data-types: string, Java.Lang.Boolean, Java.Util.Date, Java.Lang.Number, IList and IDictionary.
## Push Notifications
1. Integrate Xamarin.Firebase.Messaging Nuget package with your Xamarin.Android app
2. Send FCM Registration token to WebEngage from your FirebaseInstanceIdService class as shown below.
```csharp
using Firebase.Iid;
using Com.Webengage.Sdk.Android;
...
[Service]
[IntentFilter(new[] {
"com.google.firebase.INSTANCE_ID_EVENT"
})]
public class YourFirebaseInstanceIdService : FirebaseInstanceIdService
{
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
SendRegistrationToServer(refreshedToken);
}
void SendRegistrationToServer(string token)
{
WebEngage.Get().SetRegistrationID(token);
}
}
```
It is recommended to also send this token to WebEngage from your Application class as shown below.
```csharp
using Firebase.Iid;
using Com.Webengage.Sdk.Android;
...
[Application]
public class YourApplication : Application
{
...
public override void OnCreate()
{
base.OnCreate();
...
string token = FirebaseInstanceId.Instance.Token;
WebEngage.Get().SetRegistrationID(token);
}
}
```
3. Send the notification message data to WebEngage from your FirebaseMessagingService class as shown below.
```csharp
using Com.Webengage.Sdk.Android;
...
[Service]
[IntentFilter(new[] {
"com.google.firebase.MESSAGING_EVENT"
})]
public class YourFirebaseMessagingService : FirebaseMessagingService
{
public override void OnMessageReceived(RemoteMessage message)
{
base.OnMessageReceived(message);
IDictionary data = message.Data;
if (data.ContainsKey("source") && "webengage".Equals(data["source"])) {
WebEngage.Get().Receive(data);
}
}
}
```
4. Log in to your WebEngage dashboard and navigate to Integrations > Channels. Select Push tab and paste the your FCM/GCM server key under the field labeled “GCM/FCM Server Key” under Android section. Enter your application package name under the field labeled “Package Name” and click Save.
### Push Notification Callbacks
This is optional, but if you wish to receive push notification callbacks, then follow the below steps.
1. Implement IPushNotificationCallbacks as shown below.
```csharp
using Android.Content;
using Android.Util;
using Com.Webengage.Sdk.Android.Actions.Render;
using Com.Webengage.Sdk.Android.Callbacks;
namespace YourNamespace
{
public class YourPushNotificationCallbacks : Java.Lang.Object, IPushNotificationCallbacks
{
public YourPushNotificationCallbacks()
{
}
public bool OnPushNotificationActionClicked(Context p0, PushNotificationData p1, string p2)
{
...
return false;
}
public bool OnPushNotificationClicked(Context p0, PushNotificationData p1)
{
...
return false;
}
public void OnPushNotificationDismissed(Context p0, PushNotificationData p1)
{
...
}
public PushNotificationData OnPushNotificationReceived(Context p0, PushNotificationData p1)
{
...
return p1;
}
public void OnPushNotificationShown(Context p0, PushNotificationData p1)
{
...
}
}
}
```
2. Register IPushNotificationCallbacks implementation in your Application class as shown below.
```csharp
...
using Com.Webengage.Sdk.Android;
using Com.Webengage.Sdk.Android.Callbacks;
...
[Application]
public class YourApplication : Application
{
...
public override void OnCreate()
{
base.OnCreate();
...
WebEngage.RegisterPushNotificationCallback(new YourPushNotificationCallbacks());
}
}
}
```
## In-app Notifications
No additional integration steps are required for receiving in-app notifications. You can create in-app notifications by logging into your WebEngage Dashboard and navigate to In-app section.
### Tracking Screens
Screens can be tracked to set rules for showing in-app notifications. For example, you can create a rule in WebEngage dashboard to show in-app notification on a particular screen.
Track screen and screen data as shown below.
```csharp
using Com.Webengage.Sdk.Android;
using Java.Lang;
...
public class YourActivity : Activity
{
...
protected override void OnStart()
{
base.OnStart();
// Track screen data
IDictionary attributes = new Dictionary();
attributes.Add("name", "Home");
attributes.Add("launcher", true);
WebEngage.Get().Analytics().ScreenNavigated("Home", attributes);
...
}
}
```
### In-app Notification Callbacks
If you wish to receive in-app notification callbacks, then follow the below steps.
1. Implement IInAppNotificationCallbacks as shown below.
```csharp
using Android.Content;
using Android.Util;
using Com.Webengage.Sdk.Android.Actions.Render;
using Com.Webengage.Sdk.Android.Callbacks;
namespace YourNamespace
{
public class YourInAppNotificationCallbacks : Java.Lang.Object, IInAppNotificationCallbacks
{
public YourInAppNotificationCallbacks()
{
}
public bool OnInAppNotificationClicked(Context p0, InAppNotificationData p1, string p2)
{
...
return false;
}
public void OnInAppNotificationDismissed(Context p0, InAppNotificationData p1)
{
...
}
public InAppNotificationData OnInAppNotificationPrepared(Context p0, InAppNotificationData p1)
{
...
return p1;
}
public void OnInAppNotificationShown(Context p0, InAppNotificationData p1)
{
...
}
}
}
```
2. Register IInAppNotificationCallbacks implementation in your Application class as shown below.
```csharp
...
using Com.Webengage.Sdk.Android;
using Com.Webengage.Sdk.Android.Callbacks;
...
[Application]
public class YourApplication : Application
{
...
public override void OnCreate()
{
base.OnCreate();
...
WebEngage.RegisterInAppNotificationCallback(new YourInAppNotificationCallbacks());
}
}
}
```