700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Flutter中使用友盟统计

Flutter中使用友盟统计

时间:2021-07-05 23:45:40

相关推荐

Flutter中使用友盟统计

题记

—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。

重要消息

网易云【玩转大前端】配套课程

EDU配套 教程

Flutter开发的点滴积累系列文章

可以用来加载 Html 页面,以实现 Android 中 WebView 或者 是 iOS 中的 UIWebView 中的功能。

插件源码在这里

开发插件要具备的知识:

Flutter 与 原生 Android iOS 双向通信

Flutter通过MethodChannel实现Flutter 与Android iOS 的双向通信

Flutter通过BasicMessageChannel实现Flutter 与Android iOS 的双向通信Flutter 中内嵌 Android iOS 原生View的编程基础

flutter调用android 原生TextView

flutter调用ios 原生View 最重要的一点是 具备 Android iOS 原生语言的开发能力

flutter_fai_umeng 插件可实现的功能:

同时适配于 Android Ios 两个平台实现友盟多渠道统计实现页面的进入与退出统计实现自定义事件的统计实现错误信息的统计

1 开始使用

1 基本使用说明

1.1 Flutter 项目中 pubspec.xml 文件中 配置插件

git方式添加依赖

flutter_fai_umeng:git:url: /zhaolongs/flutter_fai_umeng.gitref: master

pub方式添加依赖pub.flutter-

dependencies:flutter_fai_umeng: ^0.0.2

1.2 初始化友盟

import 'package:flutter_fai_umeng/flutter_fai_umeng.dart';

///友盟的初始化///参数一 appkey///参数二 推送使用的pushSecret///参数三 是否打开调试日志FlutterFaiUmeng.uMengInit("5dcfb8f84ca357f70e000b0a",pushSecret: "5cb4fc014c143a77fb85cb17edd807a2", logEnabled: true);

flutter_fai_umeng 插件封装了常用的初始化配制

如在Android 中

public static void uMengInit(Context context, String appkey, String pushSecret, boolean logEnabled) {///在本方法中使用了[getChannelName]方法来获取配置在 AndroidManifest.xml中的友盟的渠道名称///如使用 360加固打包启动了多渠道打包配制,getChannelName 方法将会获取到这个渠道名称uMengInit(context, appkey, getChannelName(context), UMConfigure.DEVICE_TYPE_PHONE, pushSecret, logEnabled);}/*** @param channel 渠道的命名规范* 1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。* 2.首尾字符不可以为空格。* 3.不要使用纯数字作为渠道ID。* 4.最多256个字符。* 5.”unknown” 及其各种大小写形式,作为【友盟+】保留的字段,不可以作为渠道名。* <p>* 在您查看数据时,渠道会作为一个数据细分的维度。* @param context* @param appkey* @param channel* @param deviceType* @param pushSecret*/public static void uMengInit(Context context, String appkey, String channel, int deviceType, String pushSecret, boolean logEnabled) {/*** 设置组件化的Log开关* 参数: boolean 默认为false,如需查看LOG设置为true* Error(打印SDK集成或运行时错误信息)。* Warn(打印SDK警告信息)。* Info(打印SDK提示信息)。* Debug(打印SDK调试信息)。*/UMConfigure.setLogEnabled(logEnabled);//打开调试模式MobclickAgent.setDebugMode( logEnabled );//true打开 ,false为关闭//禁止默认的页面统计方式 (一般不用设置,因为默认是进行统计的)//MobclickAgent.openActivityDurationTrack(true);//错误收集(默认已经配置,而且已经打开)//MobclickAgent.setCatchUncaughtExceptions(true);if (channel == null || channel.equals("")) {channel = "test";}if (appkey == null || appkey.equals("")) {throw new NullPointerException("appkey is null");}/*** 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调* 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值,* UMConfigure.init调用中appkey和channel参数请置为null)。*/UMConfigure.init(context, appkey, channel, deviceType, pushSecret);// 选用LEGACY_AUTO页面采集模式MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);// 支持在子进程中统计自定义事件UMConfigure.setProcessEvent(true);}/*** 获取渠道名** @param ctx 此处习惯性的设置为activity,实际上context就可以* @return 如果没有获取成功,那么返回值为空*/public static String getChannelName(Context ctx) {if (ctx == null) {return null;}String channelName = null;try {PackageManager packageManager = ctx.getPackageManager();if (packageManager != null) {//注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfoApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);if (applicationInfo != null) {if (applicationInfo.metaData != null) {channelName = applicationInfo.metaData.getString("UMENG_CHANNEL");}}}} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return channelName;}

在 ios 中

完整源码在这里

//日志[UMConfigure setLogEnabled:logEnabled];if(logEnabled){//开发者需要显式的调用此函数,日志系统才能工作[UMCommonLogManager setUpUMCommonLogManager];}//渠道设置以及友盟的初始化[UMConfigure initWithAppkey:appkey channel:@"App Store"];//设置为自动采集页面[MobClick setAutoPageEnabled:NO];

1.3 页面的统计

进入页面

FlutterFaiUmeng.uMengPageStart("测试页面1");

退出页面

FlutterFaiUmeng.uMengPageEnd("测试页面1");

1.4 自定义事件的统计

FlutterFaiUmeng.uMengEventClick("login");

这里使用到的login 是在友盟管理后台设置的自定义事件名称

1.5 错误日志统计

友盟官方提到

组件化统计SDK内建JVM层错误统计。SDK通过Thread.UncaughtExceptionHandler 捕获程序崩溃日志,并在程序下次启动时发送到服务器

所以在这里编写的 Flutter 插件是延用的友盟官方的策略,如果是开发者自己捕捉的异常,可手动上传。

FlutterFaiUmeng.uMengError("有错误了");

如有疑问可以回复

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。