apptrove_sdk_flutter 2.0.0
apptrove_sdk_flutter: ^2.0.0 copied to clipboard
This is AppTrove Flutter SDK for mobile attribution and analytics
example/lib/main.dart
import 'dart:ffi';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:apptrove_sdk_flutter/apptrovefluttersdk.dart';
import 'package:apptrove_sdk_flutter/apptroveconfig.dart';
import 'package:apptrove_sdk_flutter/apptroveevent.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
@override
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
AppTroveSDKConfig appTroveSDKConfig = new AppTroveSDKConfig(
"be82576a-b4e8-40a7-8fe2-c25d924ddc58", "development");
appTroveSDKConfig.deferredDeeplinkCallback = (uri){
print('The value of deeplinkUrl is: $uri');
};
AppTroveFlutterSdk.updatePostbackConversion(0);
AppTroveFlutterSdk.setUserId("737263"); //Pass your userid
AppTroveFlutterSdk.setUserEmail("userEmail@gmail.com");
var userAdditionalDetails = Map<String, Object>();
userAdditionalDetails["phoneNumber"] = 9876453210;
AppTroveFlutterSdk.setUserAdditionalDetails(userAdditionalDetails);
AppTroveFlutterSdk.initializeSDK(appTroveSDKConfig);
AppTroveFlutterSdk.sendFcmToken("example_fcm_token_12345");
var appTroveId = await AppTroveFlutterSdk.getAppTroveId();
print('The value of appTroveId is: $appTroveId');
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
try {
platformVersion = await AppTroveFlutterSdk.platformVersion ??
'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AppTrove Flutter Sample App'),
),
body: Center(
child: Column(children: <Widget>[
Container(
margin: EdgeInsets.all(25),
child: MaterialButton(
child: Text(
'Track Event',
style: TextStyle(fontSize: 20.0),
),
color: Colors.cyan,
textColor: Colors.black,
onPressed: _trackSimpleEvent,
),
),
Container(
margin: EdgeInsets.all(25),
child: MaterialButton(
child: Text(
'Track Revenue Event',
style: TextStyle(fontSize: 20.0),
),
color: Colors.cyan,
textColor: Colors.black,
onPressed: _trackRevenueEvent,
),
),
]))),
);
}
_trackSimpleEvent() {
AppTroveEvent appTroveEvent = new AppTroveEvent("1CFfUn3xEY");
AppTroveFlutterSdk.setUserId("798e9w8ew09e8"); // Pass your userId here
AppTroveFlutterSdk.setUserName("abc");
AppTroveFlutterSdk.setUserPhone("6562127727");
AppTroveFlutterSdk.trackerEvent(appTroveEvent);
}
_trackRevenueEvent() {
AppTroveEvent appTroveEvent = new AppTroveEvent("1CFfUn3xEY");
appTroveEvent.revenue = 10.0;
appTroveEvent.currency = "INR";
appTroveEvent.orderId = "orderID";
appTroveEvent.param1 = "param1";
appTroveEvent.param2 = "param2";
appTroveEvent.discount = 2.0;
appTroveEvent.couponCode = "test1";
AppTroveFlutterSdk.setUserName("abc");
AppTroveFlutterSdk.setUserPhone("6562127727");
appTroveEvent.setEventValue("ev1", "eventValue1");
appTroveEvent.setEventValue("ev2", 1);
AppTroveFlutterSdk.trackerEvent(appTroveEvent);
}
}