relateddigital_flutter 0.1.3 relateddigital_flutter: ^0.1.3 copied to clipboard
Related Digital Flutter SDK
Table of Contents #
Introduction #
This library is the official Flutter SDK of Related Digital.
Requirements #
- iOS 10.0 or later
- Android API level 21 or later
Installation #
- Edit your project's
pubspec.yaml
file:
dependencies:
relateddigital_flutter: ^0.1.3
-
Run
flutter pub get
-
Import the package:
import 'package:relateddigital_flutter/relateddigital_flutter.dart';
Platform-Integration #
Android #
- Add the following lines to the
repositories
section inproject/build.gradle
maven {url 'http://developer.huawei.com/repo/'} // skip if your app does not support HMS
- Add the following lines to the
dependencies
section inproject/build.gradle
classpath 'com.google.gms:google-services:4.3.5'
classpath 'com.huawei.agconnect:agcp:1.4.1.300' // skip if your app does not support HMS
- Add the following lines to the end of
app/build.gradle
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.huawei.agconnect' // skip if your app does not support HMS
- Add the following services to your
AndroidManifest.xml
, within the<application></application>
tags.
<service
android:name="euromsg.com.euromobileandroid.service.EuroFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- skip if your app does not support HMS -->
<service
android:name="euromsg.com.euromobileandroid.service.EuroHuaweiMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
-
Add
google-services.json
file to your application’sapp
directory. -
If your app supports
HMS
addagconnect-services.json
file to your application’sapp
directory.
iOS #
- Change the ios platform version to 10.0 or higher in
Podfile
platform :ios, '10.0'
-
In your project directory, open the file
ios/Runner.xcworkspace
with Xcode. -
Enable
Push Notifications
andBackground Modes->Remote Notifications
capabilities.
Usage #
Initializing #
Import the library
import 'package:relateddigital_flutter/relateddigital_flutter.dart';
import 'package:relateddigital_flutter/request_models.dart';
import 'package:relateddigital_flutter/response_models.dart';
Initialize the library
final RelateddigitalFlutter relatedDigitalPlugin = RelateddigitalFlutter();
@override
void initState() {
super.initState();
initLib();
}
Future<void> initLib() async {
var initRequest = RDInitRequestModel(
appAlias: Platform.isIOS ? 'ios-alias' : 'android-alias',
huaweiAppAlias: 'huawei-alias', // pass empty String if your app does not support HMS
androidPushIntent: 'com.test.MainActivity', // Android only
organizationId: 'ORG_ID',
siteId: 'SITE_ID',
dataSource: 'DATA_SOURCE',
maxGeofenceCount: 20, // iOS only
geofenceEnabled: true,
inAppNotificationsEnabled: true, // iOS only
logEnabled: true,
);
await relatedDigitalPlugin.init(initRequest);
}
Push Notifications #
Requesting Permission & Retrieving Token #
Add the lines below to request push notification permission and retrieve token.
String token = '-';
void _getTokenCallback(RDTokenResponseModel result) {
if(result != null && result.deviceToken != null && result.deviceToken.isNotEmpty) {
setState(() {
token = result.deviceToken;
});
}
else {
setState(() {
token = 'Token not retrieved';
});
}
}
void _readNotificationCallback(dynamic result) {
print(result);
}
Future<void> requestPermission() async {
await relatedDigitalPlugin.requestPermission(_getTokenCallback, _readNotificationCallback);
}
Data Collection #
Related Digital uses events to collect data from mobile applications. The developer needs to implement the methods provided by SDK. customEvent
is a generic method to track user events. customEvent
takes 2 parameters: pageName and properties.
- pageName : The current page of your application. If your event is not related to a page view, you should pass a value related to the event. If you pass an empty String the event would be considered invalid and discarded.
- parameters : A collection of key/value pairs related to the event. If your event does not have additional data apart from page name, passing an empty Map acceptable.
Some of the most common events:
Sign Up #
String pageName = 'SignUp';
Map<String, String> parameters = {
'OM.exVisitorID':'userId',
'OM.b_sgnp':'1'
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Login #
String pageName = 'Login';
Map<String, String> parameters = {
'OM.exVisitorID':'userId',
'OM.b_login':'1'
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Page View #
Use the following implementation of customEvent
method to record the page name the visitor is currently viewing. You may add extra parameters to properties Map or you may leave it empty.
String pageName = 'Page Name';
Map<String, String> parameters = {};
await relatedDigitalPlugin.customEvent(pageName, parameters);
Product View #
Use the following implementation of customEvent
when the user displays a product in the mobile app.
String pageName = 'Product View';
Map<String, String> parameters = {
'OM.pv' : productCode,
'OM.pn' : productName,
'OM.ppr' : productPrice,
'OM.pv.1' : productBrand,
'OM.inv': inventory // Number of items in stock
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Add to Cart #
Use the following implementation of customEvent
when the user adds items to the cart or removes.
String pageName = 'Cart';
Map<String, String> parameters = {
'OM.pbid' : basketID,
'OM.pb' : 'Product1 Code;Product2 Code',
'OM.pu' : 'Product1 Quantity;Product2 Quantity',
'OM.ppr' : 'Product1 Price*Product1 Quantity;Product2 Price*Product2 Quantity'
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Product Purchase #
Use the following implementation of customEvent
when the user buys one or more items.
String pageName = 'Purchase';
Map<String, String> parameters = {
'OM.tid' : transactionID,
'OM.pp' : 'Product1 Code;Product2 Code',
'OM.pu' : 'Product1 Quantity;Product2 Quantity',
'OM.ppr' : 'Product1 Price*Product1 Quantity;Product2 Price*Product2 Quantity',
'OM.exVisitorID' : userId
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Product Category Page View #
When the user views a category list page, use the following implementation of customEvent
.
String pageName = 'Category View';
Map<String, String> parameters = {
'OM.clist': '12345',
};
relatedDigitalPlugin.customEvent(pageName, parameters);
In App Search #
If the mobile app has a search functionality available, use the following implementation of customEvent
.
String pageName = 'In App Search';
Map<String, String> parameters = {
'OM.OSS': searchKeyword,
'OM.OSSR': searchResult.length,
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Banner Click #
You can monitor banner click data using the following implementation of customEvent
.
String pageName = 'Banner Click';
Map<String, String> parameters = {
'OM.OSB': 'Banner Name/Banner Code',
};
relatedDigitalPlugin.customEvent(pageName, parameters);;
Add To Favorites #
When the user adds a product to their favorites, use the following implementation of customEvent
.
String pageName = 'Add To Favorites';
Map<String, String> parameters = {
'OM.pf' : productCode,
'OM.pfu' : '1',
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Remove from Favorites #
When the user removes a product from their favorites, use the following implementation of customEvent
.
String pageName = 'Add To Favorites';
Map<String, String> parameters = {
'OM.pf' : productCode,
'OM.pfu' : '-1',
};
relatedDigitalPlugin.customEvent(pageName, parameters);
Targeting Actions #
In-App Messaging #
In-app messages are notifications to your users when they are directly active in your mobile app. To enable In-App Messaging feature you need to set the value of inAppNotificationsEnabled
parameter to true
when calling init
to initialize the SDK.
The existence of a relevant in-app message for an event controlled by after each customEvent
call. You can create and customize your in-app messages on https://intelligence.relateddigital.com/#Target/TargetingAction/TAList page of RMC administration panel.
There are 9 types of in-app messages:
Pop-up - Image, Header, Text & Button | Mini-icon&text | Full Screen-image |
---|---|---|
Full Screen-image&button | Pop-up - Image, Header, Text & Button | Pop-up-Survey |
Pop-up - NPS with Text & Button | Native Alert & Actionsheet | NPS with numbers |