mzanalytics_mybmw 0.7.0+2
mzanalytics_mybmw: ^0.7.0+2 copied to clipboard
One for BMW Group to use flutter plug-in, data collection and analysis.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mzanalytics_mybmw/mzanalytics_mybmw.dart';
import 'package:mzanalytics_mybmw/mzanalytics_bugService.dart';
import 'package:uni_links/uni_links.dart';
import "crashTest.dart";
void main() =>
Mzanalytics_bugService.exceptionListener(() => runApp(new MaterialApp(
title: 'Navigation Basics',
home: new MyApp(),
)));
// void main() {
// runApp(MyApp());
// }
class MyApp extends StatefulWidget {
// 用于路由返回监听
static final RouteObserver<PageRoute> routeObserver =
RouteObserver<PageRoute>();
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _cid = 'Unknown';
String _oaid = 'Unknown';
String _myevent = '自定义事件';
@override
void initState() {
super.initState();
this.initPlatformStateForStringUniLinks();
}
// Platform messages are asynchronous, so we initialize in an async method.
void getcid() async {
// callback function
String cid = await MzanalyticsMybmw.getCid();
setState(() {
_cid = cid;
});
}
@override
Widget build(BuildContext context) {
MzanalyticsMybmw.logEnabled(true);
return MaterialApp(
// navigatorObservers: [MZNavigationHistoryObserver()],
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: new Center(
child: ListView(
children: <Widget>[
Container(
alignment: Alignment.topCenter,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
key: Key("key1"),
onPressed: () {
MzanalyticsMybmw.appid("3852");
},
child: Text('初始化'),
),
ElevatedButton(
key: Key("key1_2"),
onPressed: () {
MzanalyticsMybmw.enableExceptionService(true);
},
child: Text('启动crash采集'),
),
ElevatedButton(
key: Key("key2"),
onPressed: () {
// var w = [];
// print(w[1]);
MzanalyticsMybmw.trackPageView({
"dt": "首页",
"CustomDimMetrics": {
"cd1": "ID88888", //需统计的自定义维度1的名称,如浏览该页面的用户Id
"cd2": "小明机器人", //需统计的自定义维度2的名称,如浏览页面的用户名称
"cm1": "1" //需统计的自定义指标的数值,如用户个数为1
}
});
},
child: Text('页面事件'),
),
ElevatedButton(
key: Key("key3"),
onPressed: () {
MzanalyticsMybmw.trackEvent({
"ec": "领取奖励",
"ea": "Click",
"el": "任务箱领取奖励",
"CustomDimMetrics": {
"cd3": "首次登陆任务箱", //需统计的自定义维度名称,如任务箱名称
"cm2": "2" //需统计的自定义指标数值,如打开的任务箱个数,共2个
}
});
},
child: Text('自定义事件监测'),
),
ElevatedButton(
key: Key("key4"),
onPressed: () {
MzanalyticsMybmw.trackSiteCustomEvent({
"CustomEvent": {
"caid": "1",
"cal1": "a",
"cal2": "北京",
"cav21": "21",
'cal21': '21',
},
"CustomDimMetrics": {
"cd1": "ID88888", //需统计的自定义维度,如触发注册事件的用户Id
"cm1": "1" //需统计的自定义指标,如触发高级事件的用户数1
}
});
},
child: Text('高级自定义事件'),
),
ElevatedButton(
key: Key("key5"),
onPressed: () {
MzanalyticsMybmw.trackPulse();
},
child: Text('心跳事件'),
),
ElevatedButton(
key: Key("key6"),
onPressed: () {
getcid();
},
child: Text('cid: $_cid\n'),
),
ElevatedButton(
key: Key("key8"),
onPressed: () {
MzanalyticsMybmw.setCd("cd6", "9999");
},
child: Text("设置cd"),
),
ElevatedButton(
key: Key("key9"),
onPressed: () {
MzanalyticsMybmw.setCm("cm2", "1001");
},
child: Text("设置cm"),
),
ElevatedButton(
key: Key("key10"),
onPressed: () {
MzanalyticsMybmw.deleteCd("cd2");
},
child: Text("删除cd"),
),
ElevatedButton(
key: Key("key11"),
onPressed: () {
MzanalyticsMybmw.deleteCd("cm2");
},
child: Text("删除cm"),
),
ElevatedButton(
key: Key("key12"),
onPressed: () {
MzanalyticsMybmw.setCAIDandVersion({
'currentCAID': 'e2b3d6e424963853821b2188cc5a00',
'currentCAIDVersion': '20210622',
'lastCAID': 'e2b3d6e424963853821b2188c11111',
'lastCAIDVersion': '20210303'
});
},
child: Text("设置caid和version"),
),
ElevatedButton(
key: Key("key13"),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
settings: RouteSettings(name: "进入测试页面"),
builder: (BuildContext context) => CrashTestApp()));
},
child: Text('crash测试页'),
),
],
),
)
],
),
),
),
);
}
/// 使用[String]链接实现
Future<void> initPlatformStateForStringUniLinks() async {
String? initialLink;
// App start
try {
initialLink = await getInitialLink();
MzanalyticsMybmw.onDeepLinkReceived(initialLink ?? "");
print('initial link: $initialLink');
if (initialLink is String) {
print('initialLink--$initialLink');
// 跳转到指定页面
// schemeJump(context, initialLink);
}
} on PlatformException {
initialLink = 'Failed to get initial link.';
} on FormatException {
initialLink = 'Failed to parse the initial link as Uri.';
}
// App running
getLinksStream().listen((String? link) {
print('link--$link');
MzanalyticsMybmw.onDeepLinkReceived(link ?? "");
// 跳转到指定页面
}, onError: (Object err) {});
}
}