Flutter插件resfluttersdk的介绍与使用
Flutter插件resfluttersdk的介绍与使用
resfluttersdk 简介
resfluttersdk 是一款用于与 Resulticks 分析模块集成的 Flutter 插件。它允许开发者通过 Flutter 应用捕获分析相关的数据,并支持推送通知服务。该插件适用于 Android 和 iOS 平台,并且可以在跨平台应用中使用。
功能概述
- 数据捕获:支持用户行为跟踪、事件捕获等功能。
- 推送通知:实现推送通知的发送和管理。
- 用户注册:支持设备用户的注册和更新。
- 页面追踪:记录用户在应用内的页面访问情况。
Flutter插件resfluttersdk的使用步骤
以下是一个完整的示例,展示如何在 Flutter 应用中集成和使用 resfluttersdk。
1. 添加依赖
在 pubspec.yaml 文件中添加 resfluttersdk 依赖:
dependencies:
resfluttersdk: ^1.0.0 # 替换为最新版本号
运行 flutter pub get 安装依赖。
2. 初始化插件
在 main.dart 文件中初始化插件并配置必要的功能。
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:resfluttersdk/refluttersdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // 初始化 Flutter 绑定
await Firebase.initializeApp(); // 初始化 Firebase(如果需要)
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'RESFlutterSDK Example',
debugShowCheckedModeBanner: false,
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'RESFlutterSDK Demo'),
);
}
}
3. 配置插件
在 MyHomePage 中配置插件,根据平台调用不同的初始化方法。
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
final _refluttersdkPlugin = Refluttersdk();
class _MyHomePageState extends State<MyHomePage> {
var token = "ADkekowiksi3ieje93jowi3sdkjie"; // FCM Token 示例
StreamSubscription<String>? streamSubscription;
[@override](/user/override)
void initState() {
super.initState();
if (kIsWeb) {
_refluttersdkPlugin.initWebSDK("./sw.js"); // Web 平台初始化
} else if (defaultTargetPlatform == TargetPlatform.android ||
defaultTargetPlatform == TargetPlatform.iOS) {
_getFcmToken(); // 获取 FCM Token
}
if (defaultTargetPlatform == TargetPlatform.android) {
deeplinkListener(); // 监听深度链接
} else {
getDeeplinkData(); // 获取深度链接数据
}
}
// 获取 FCM Token
Future<void> _getFcmToken() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
messaging.getToken().then((value) {
debugPrint('FCM Token: $value');
setState(() {
token = value!;
});
});
}
// 深度链接监听器
deeplinkListener() {
streamSubscription = _refluttersdkPlugin.listenDeeplinkData().listen((data) async {
try {
debugPrint('DeepLink Listener :: $data');
var deeplinkData = jsonDecode(data);
var customParams = deeplinkData['customParams'];
if (customParams != null) {
screenNavigator(jsonDecode(customParams)['screenName'], jsonDecode(customParams)['data']);
}
_refluttersdkPlugin.deepLinkDataReset(); // 重置深度链接数据
} catch (e) {
debugPrint('$e');
}
});
}
// 导航到指定页面
screenNavigator(var screenName, var data) {
switch (screenName) {
case "CareerPage":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page1()));
}
break;
case "CertificationPage":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page2()));
}
break;
case "Page3":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page3()));
}
break;
default:
debugPrint("ScreenName is not defined!!!");
}
}
}
4. 调用插件功能
用户注册
// 用户注册
sdkRegisteration() {
if (kIsWeb) {
Map<String, dynamic> userData = {
"userUniqueId": "visionuser@email.com",
"name": "visionUser",
"age": "23",
"email": "visionuser@gmail.com",
"phone": "9393939392",
"gender": "Male",
"profileUrl": "",
"dateOfBirth": "13/7/2003",
};
_refluttersdkPlugin.sdkRegisteration(userData);
} else {
Map<String, dynamic> userData = {
"userUniqueId": "abc@gmail.com",
"name": "kkkkk",
"age": "23",
"email": "abc@gmail.com",
"phone": "12334455",
"gender": "Male",
"profileUrl": "",
"dob": "23/12/2010",
"education": "BE",
"employed": "true",
"married": "false",
"deviceToken": token,
"storeId": "555",
};
_refluttersdkPlugin.sdkRegisteration(userData);
}
}
页面追踪
// 页面追踪
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page1");
});
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page1()));
数据捕获
// 表单数据捕获
formdataCapture() {
Map<String, dynamic> formData = {
"Name": "vishwa",
"EmailID": "abc@gmail.com",
"MobileNo": 9329333,
"Gender": "Male",
"formid": 101,
"apikey": "b78db6rb3-9462-4132-a4d3-894db10b3782",
"City": "Chennai",
};
_refluttersdkPlugin.formDataCapture(formData);
}
5. 完整示例代码
以下是完整的示例代码:
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:resfluttersdk/refluttersdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'RESFlutterSDK Example',
debugShowCheckedModeBanner: false,
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'RESFlutterSDK Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
final _refluttersdkPlugin = Refluttersdk();
class _MyHomePageState extends State<MyHomePage> {
var token = "ADkekowiksi3ieje93jowi3sdkjie";
StreamSubscription<String>? streamSubscription;
[@override](/user/override)
void initState() {
super.initState();
if (kIsWeb) {
_refluttersdkPlugin.initWebSDK("./sw.js");
} else if (defaultTargetPlatform == TargetPlatform.android ||
defaultTargetPlatform == TargetPlatform.iOS) {
_getFcmToken();
}
if (defaultTargetPlatform == TargetPlatform.android) {
deeplinkListener();
} else {
getDeeplinkData();
}
}
Future<void> _getFcmToken() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
messaging.getToken().then((value) {
debugPrint('FCM Token: $value');
setState(() {
token = value!;
});
});
}
deeplinkListener() {
streamSubscription = _refluttersdkPlugin.listenDeeplinkData().listen((data) async {
try {
debugPrint('DeepLink Listener :: $data');
var deeplinkData = jsonDecode(data);
var customParams = deeplinkData['customParams'];
if (customParams != null) {
screenNavigator(jsonDecode(customParams)['screenName'], jsonDecode(customParams)['data']);
}
_refluttersdkPlugin.deepLinkDataReset();
} catch (e) {
debugPrint('$e');
}
});
}
getDeeplinkData() {
_refluttersdkPlugin.listener((data) {
debugPrint("Deeplink Data :: $data");
var deeplinkData = jsonDecode(data);
var customParams = deeplinkData['customParams'];
if (customParams != null) {
screenNavigator(jsonDecode(customParams)['screenName'], jsonDecode(customParams)['data']);
}
_refluttersdkPlugin.deepLinkDataReset();
});
}
screenNavigator(var screenName, var data) {
switch (screenName) {
case "CareerPage":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page1()));
}
break;
case "CertificationPage":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page2()));
}
break;
case "Page3":
if (data != null) {
// 传递数据
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page3()));
}
break;
default:
debugPrint("ScreenName is not defined!!!");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('RESFlutterSDK', style: TextStyle(fontWeight: FontWeight.bold)),
),
body: SingleChildScrollView(
child: ConstrainedBox(
constraints: const BoxConstraints(),
child: Container(
child: Column(
children: [
ElevatedButton(onPressed: sdkRegisteration, child: const Text("On Device User Register")),
ElevatedButton(onPressed: () => updatepushToken(token), child: const Text("update Push Token")),
ElevatedButton(onPressed: passLocation, child: const Text("Update Location")),
ElevatedButton(onPressed: () => readnotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"), child: const Text("Read Notification By Id")),
ElevatedButton(onPressed: () => unreadNotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"), child: const Text("UnRead Notification BY Id")),
ElevatedButton(onPressed: getNotificationList, child: const Text("Get Notification List")),
ElevatedButton(onPressed: readnotificationCount, child: const Text("Read Notification Count")),
ElevatedButton(onPressed: unReadnotificationCount, child: const Text("Un_Read_Notification_Count")),
ElevatedButton(onPressed: () => deleteNotificationByCampaignid("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"), child: const Text("Delete Notification By CampaignId")),
ElevatedButton(onPressed: formdataCapture, child: const Text("form Data Capture")),
ElevatedButton(onPressed: customEvent, child: const Text("customEvent")),
ElevatedButton(onPressed: customEventwithData, child: const Text("customEventwithData")),
ElevatedButton(onPressed: appconversionTracking, child: const Text("app Conversion Tracking")),
ElevatedButton(onPressed: appconversionTrackingWithData, child: const Text("App Conversion Tracking WithData")),
ElevatedButton(onPressed: () => notificationCTAClick("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124", 4833), child: const Text("NotificationCTA clicked")),
ElevatedButton(onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page1");
});
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page1()));
}, child: const Text("Page-1")),
ElevatedButton(onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page2");
});
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page2()));
}, child: const Text("Page-2")),
ElevatedButton(onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page3");
});
Navigator.push(context, MaterialPageRoute(builder: (_) => const Page3()));
}, child: const Text("Page-3")),
],
),
),
),
),
);
}
}
class Page1 extends StatelessWidget {
const Page1({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: const Center(child: Text('Page1')),
);
}
}
class Page2 extends StatelessWidget {
const Page2({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: const Center(child: Text('Page2')),
);
}
}
class Page3 extends StatelessWidget {
const Page3({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: const Center(child: Text('Page3')),
);
}
}更多关于Flutter插件resfluttersdk的介绍与使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

