Flutter自定义功能插件fluttersamplesdkplugin的使用
Flutter自定义功能插件fluttersamplesdkplugin的使用
概述
fluttersampleplugin
是一个用于集成 Resulticks 分析模块的 Flutter 插件。它允许通过 Flutter 应用程序捕获分析相关的数据,并支持跨平台(Android 和 iOS)的推送通知服务。通过该插件,您可以实现用户旅程报告、客户数据增强以及触发或创建营销活动等功能。
使用步骤
1. 添加依赖
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
fluttersampleplugin: ^1.0.0
然后运行 flutter pub get
来安装插件。
2. 初始化插件
在应用程序启动时初始化插件。通常在 main()
函数中完成初始化操作。
import 'package:flutter/material.dart';
import 'package:fluttersampleplugin/fluttersampleplugin.dart';
void main() async {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'ReFlutterSDK-Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
3. 初始化 SDK 并监听事件
在 MyHomePage
中初始化插件并设置事件监听器。
class _MyHomePageState extends State<MyHomePage> {
late var screenName;
var token;
[@override](/user/override)
void initState() {
super.initState();
_refluttersdkPlugin.listener((data) {
print("Deeplink Data :: $data");
Map<String, dynamic> notificationData = jsonDecode(data);
String screenName = notificationData['customParams']['screenName'];
print("ScreenName :: $screenName");
});
}
}
4. 调用插件功能
更新用户位置
passLocation() {
double lat = 13.0827;
double lang = 80.2707;
_refluttersdkPlugin.locationUpdate(lat, lang);
}
自定义事件
customEvent() {
var event = "On Track Event called!!!";
_refluttersdkPlugin.customEvent(event);
}
自定义事件并传递数据
customEventwithData() {
var eventData = {
"name": "payment",
"data": {"id": "6744", "price": "477"}
};
_refluttersdkPlugin.customEventWithData(eventData);
}
删除通知
deleteNotificationByCampaignid(campaignId) {
_refluttersdkPlugin.deleteNotificationByCampaignId(campaignId);
}
读取通知
readnotification(campaignId) {
_refluttersdkPlugin.readNotification(campaignId);
}
未读通知
unreadNotification(campaignId) {
_refluttersdkPlugin.unReadNotification(campaignId);
}
应用转化跟踪
appconversionTracking() {
_refluttersdkPlugin.appConversion();
}
appconversionTrackingWithData() {
Map appConversionData = {
"name": "xyrr",
"data": {"age": "23", "city": "yyy"}
};
_refluttersdkPlugin.appConversionWithData(appConversionData);
}
表单数据捕获
formdataCapture() {
Map formData = {
"Name": "vishwa",
"EmailID": "abc@gmail.com",
"MobileNo": 9329333,
"Gender": "Male",
"formid": 101,
"apikey": "b78db6rb3-9462-4132-a4d3-894db10b3782",
"City": "Chennai"
};
_refluttersdkPlugin.formDataCapture(formData);
}
更新推送令牌
updatepushToken(fcmToken) {
_refluttersdkPlugin.updatePushToken(fcmToken);
}
SDK 注册
sdkRegisteration() {
Map userData = {
"userUniqueId": "1111",
"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);
}
获取通知列表
getNotificationList() async {
var notificationList = await _refluttersdkPlugin.getNotificationList();
print("GetNotificationList::$notificationList");
}
获取已读通知数量
readnotificationCount() async {
var rnCount = await _refluttersdkPlugin.getReadNotificationCount();
if (kDebugMode) {
print("readNotificationCount::$rnCount");
}
}
获取未读通知数量
unReadnotificationCount() async {
var unreadCount = await _refluttersdkPlugin.getUnReadNotificationCount();
print("unReadNotificationCount::$unreadCount");
}
5. 示例代码
以下是完整的示例代码:
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:fluttersampleplugin/fluttersampleplugin.dart';
void main() async {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'ReFlutterSDK-Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
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 = Fluttersampleplugin();
class _MyHomePageState extends State<MyHomePage> {
late var screenName;
var token;
[@override](/user/override)
void initState() {
super.initState();
_getFcmToken();
_refluttersdkPlugin.listener((data) {
print("Deeplink Data :: $data");
Map<String, dynamic> notificationData = jsonDecode(data);
String screenName = notificationData['customParams']['screenName'];
print("ScreenName :: $screenName");
});
}
Future<void> _getFcmToken() async {
// messaging = FirebaseMessaging.instance;
// messaging.getToken().then((value) {
// print('Fcm Token: $value');
// token = value;
// });
}
passLocation() {
double lat = 13.0827;
double lang = 80.2707;
_refluttersdkPlugin.locationUpdate(lat, lang);
}
customEvent() {
var event = "On Track Event called!!!";
_refluttersdkPlugin.customEvent(event);
}
customEventwithData() {
var eventData = {
"name": "payment",
"data": {"id": "6744", "price": "477"}
};
_refluttersdkPlugin.customEventWithData(eventData);
}
deleteNotificationByCampaignid(campaignId) {
_refluttersdkPlugin.deleteNotificationByCampaignId(campaignId);
}
readnotification(campaignId) {
_refluttersdkPlugin.readNotification(campaignId);
}
unreadNotification(campaignId) {
_refluttersdkPlugin.unReadNotification(campaignId);
}
appconversionTracking() {
_refluttersdkPlugin.appConversion();
}
appconversionTrackingWithData() {
Map appConversionData = {
"name": "xyrr",
"data": {"age": "23", "city": "yyy"}
};
_refluttersdkPlugin.appConversionWithData(appConversionData);
}
formdataCapture() {
Map formData = {
"Name": "vishwa",
"EmailID": "abc@gmail.com",
"MobileNo": 9329333,
"Gender": "Male",
"formid": 101,
"apikey": "b78db6rb3-9462-4132-a4d3-894db10b3782",
"City": "Chennai"
};
_refluttersdkPlugin.formDataCapture(formData);
}
updatepushToken(fcmToken) {
_refluttersdkPlugin.updatePushToken(fcmToken);
}
sdkRegisteration() {
Map userData = {
"userUniqueId": "1111",
"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);
}
readnotificationCount() async {
var rnCount = await _refluttersdkPlugin.getReadNotificationCount();
if (kDebugMode) {
print("readNotificationCount::$rnCount");
}
}
unReadnotificationCount() async {
var unreadCount = await _refluttersdkPlugin.getUnReadNotificationCount();
print("unReadNotificationCount::$unreadCount");
}
getNotificationList() async {
var notificationList = await _refluttersdkPlugin.getNotificationList();
print("GetNotificationList::$notificationList");
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('ReFlutter - Sdk'),
),
body: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(),
child: Container(
child: Column(
children: [
ElevatedButton(
onPressed: sdkRegisteration,
child: Text("On Device User Register"),
),
ElevatedButton(
onPressed: () => updatepushToken(token),
child: Text("update Push Token"),
),
ElevatedButton(
onPressed: passLocation,
child: Text("Update Location"),
),
ElevatedButton(
onPressed: () => readnotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"),
child: Text("Read Notification By Id"),
),
ElevatedButton(
onPressed: () => unreadNotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"),
child: Text("UnRead Notification BY Id"),
),
ElevatedButton(
onPressed: getNotificationList,
child: Text("Get Notification List"),
),
ElevatedButton(
onPressed: readnotificationCount,
child: Text("Read Notification Count"),
),
ElevatedButton(
onPressed: unReadnotificationCount,
child: Text("Un_Read_Notification_Count"),
),
ElevatedButton(
onPressed: () =>
deleteNotificationByCampaignid("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124"),
child: Text("Delete Notification By CampaignId"),
),
ElevatedButton(
onPressed: formdataCapture,
child: Text("form Data Capture"),
),
ElevatedButton(
onPressed: customEvent,
child: Text("customEvent"),
),
ElevatedButton(
onPressed: customEventwithData,
child: Text("customEventwithData"),
),
ElevatedButton(
onPressed: appconversionTracking,
child: Text("app Conversion Tracking"),
),
ElevatedButton(
onPressed: appconversionTrackingWithData,
child: Text("App Conversion Tracking WithData"),
),
ElevatedButton(
onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page1");
});
},
child: Text("Page-1"),
),
ElevatedButton(
onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page2");
});
},
child: Text("Page-2"),
),
ElevatedButton(
onPressed: () {
WidgetsBinding.instance.addPostFrameCallback((_) {
_refluttersdkPlugin.screentracking("page3");
});
},
child: Text("Page-3"),
),
],
),
),
),
),
),
);
}
}
更多关于Flutter自定义功能插件fluttersamplesdkplugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter自定义功能插件fluttersamplesdkplugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,自定义插件(Plugin)允许你将原生平台(如Android和iOS)的功能集成到Flutter应用中。flutter_sample_sdk_plugin
是一个假设的自定义插件名称,用于演示如何创建和使用自定义插件。
1. 创建自定义插件
首先,你需要创建一个Flutter插件。你可以使用Flutter命令行工具来创建一个插件项目:
flutter create --template=plugin flutter_sample_sdk_plugin
这将生成一个包含Android和iOS代码的插件项目。
2. 实现插件功能
在生成的插件项目中,你需要实现原生平台的功能。
Android
在 android/src/main/kotlin/com/example/flutter_sample_sdk_plugin/FlutterSampleSdkPlugin.kt
文件中,你可以实现Android平台的逻辑。
package com.example.flutter_sample_sdk_plugin
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.PluginRegistry.Registrar
class FlutterSampleSdkPlugin: MethodCallHandler {
companion object {
@JvmStatic
fun registerWith(registrar: Registrar) {
val channel = MethodChannel(registrar.messenger(), "flutter_sample_sdk_plugin")
channel.setMethodCallHandler(FlutterSampleSdkPlugin())
}
}
override fun onMethodCall(call: MethodCall, result: Result) {
when (call.method) {
"getPlatformVersion" -> {
result.success("Android ${android.os.Build.VERSION.RELEASE}")
}
else -> {
result.notImplemented()
}
}
}
}
iOS
在 ios/Classes/FlutterSampleSdkPlugin.m
文件中,你可以实现iOS平台的逻辑。
#import "FlutterSampleSdkPlugin.h"
@implementation FlutterSampleSdkPlugin
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
FlutterMethodChannel* channel = [FlutterMethodChannel
methodChannelWithName:@"flutter_sample_sdk_plugin"
binaryMessenger:[registrar messenger]];
FlutterSampleSdkPlugin* instance = [[FlutterSampleSdkPlugin alloc] init];
[registrar addMethodCallDelegate:instance channel:channel];
}
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
if ([@"getPlatformVersion" isEqualToString:call.method]) {
result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);
} else {
result(FlutterMethodNotImplemented);
}
}
@end
3. 在Dart中使用插件
在Flutter应用中,你可以通过 MethodChannel
调用插件中的方法。
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _platformVersion = 'Unknown';
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
const platform = const MethodChannel('flutter_sample_sdk_plugin');
platformVersion = await platform.invokeMethod('getPlatformVersion');
} on PlatformException catch (e) {
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
void initState() {
super.initState();
initPlatformState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('Running on: $_platformVersion\n'),
),
);
}
}
void main() {
runApp(MaterialApp(
home: HomePage(),
));
}
4. 安装插件
在你的Flutter项目中,你可以通过以下方式安装和使用这个插件:
- 在
pubspec.yaml
文件中添加插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_sample_sdk_plugin:
path: ../path_to_your_plugin