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

重要消息

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

  • 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: https://github.com/zhaolongs/flutter_fai_umeng.gitref: master

pub方式添加依赖pub.flutter-io.cn

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("有错误了");

如有疑问可以回复

Flutter中使用友盟统计相关推荐

  1. android 友盟统计功能,在Android工程中集成友盟统计

    在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...

  2. flutter友盟分享_Flutter中使用友盟统计

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 可以用来加载 Html 页面,以实现 Android 中 WebView 或者 是 iOS 中的 UIWeb ...

  3. 前端监控--vue项目中使用友盟统计监控

    在项目的使用过程中,不可避免的会出现各种奇奇怪怪的报错,有的可能会导致项目程序崩溃无法运行,但是我们作为开发人员是不会立刻知道这种突发情况的,所以我们需要搜集程序的报错信息,及时解决错误,提高项目的稳 ...

  4. uni-app中接入友盟统计

    1.首先要有一个友盟的账号,在友盟上创建你的应用. 2.然后进入到manifest.json文件,勾选"Statistic(统计)",uni-app中自带统计sdk使用 3.进入到 ...

  5. uniapp开发app过程中集成友盟统计

    uniapp在开发app过程中,需要集成友盟统计,可参考以下流程进行配置 友盟统计官网注册并获取appkey 单独创建安卓跟ios的应用,获取到appkey(这里以安卓为例) 配置manifest.j ...

  6. flutter友盟分享_flutter友盟统计之界面统计

    2020.10.20日更新: 最近发现了一种更好的方法,就是使用RouteAware监听路由,下面是实现代码 初始化: RouteObserver需要申明为全局属性并作为参数传入MaterialApp ...

  7. Android中统计分析的SDK ,友盟统计,百度统计,腾讯统计

    APP统计分析 用户画像 对程序员来说,用户画像就是用户的属性和行为:通俗地说,用户画像是包括了个人信息.兴趣爱好.日常行为等血肉丰满的客户实体.用户画像是精准营销的产物,企业通过收集用户的行为,然后 ...

  8. android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...

    如有不正确的地方,望各路小哥哥.小姐姐指点,小女子在此谢过(*^__^*) 嘻嘻-- 一般app做推广的时候都需要渠道包,方便分析数据,查看渠道质量 一.先去友盟平台申请一个appkey a.   a ...

  9. Android开发之带你轻松集成友盟统计

    友盟统计是什么呢?为什么要集成他呢? 当我们需要获取自己写的软件的装机量和用户使用信息时,这时我们可以集成友盟统计. 首先到友盟统计中注册账号什么的就不废话了,直接看创建项目: 在个人中心中的管理里面 ...

最新文章

  1. 大到31x31的超大卷积核,涨点又高效,一作解读RepLKNet
  2. AC日记——友好城市 洛谷 P2782
  3. asp.net application,session,static 几种变量生命周期及用法 收藏
  4. MIP ACCESS细节剖析
  5. 【干货】网易严选大数据架构.pdf(附下载链接)
  6. 010.第一个回声服务器可能遇到的问题——connect函数
  7. Async和Await简介
  8. 冰雪大作战服务器响应超时,《冰雪大作战》一场回归童心的战争游戏
  9. 小程序服务器配置要多高,小程序服务器配置要求
  10. 今日头条 mysql_今日头条的核心架构解析
  11. word2010里脚注横线如何顶格
  12. 正向查找区域和反向查找区域的操作教程(内提供系统镜像下载)
  13. oracle中的INTERVAL函数用法
  14. [OGRE]基础教程来三发:来谈一谈摄像机吧
  15. vtop工具使用分析
  16. 使用特定分隔符分割字符串
  17. AOP注解和切入点表达式
  18. css 禅意花园 笔记
  19. 案例精选 | 左耳朵耗子:如何写出让同事无法维护的代码?
  20. 电脑音量,电脑声音最大了还是小如何解决_电脑声音开到最大还是很小怎么办...

热门文章

  1. 直播 | 智能仓库:端侧 AI 和 OpenVINO 落地实践
  2. 微软开源了一个用TF实现的GNN例程库
  3. Python自学真的可以学好嘛?
  4. 新模型!Conformer!Transformer与CNN的超强融合!
  5. 学术圈「超级内卷」:“青椒”难!
  6. 一文梳理水下目标检测方法
  7. 赞!史上最强音视频下载神器youtube-dl回归,GitHub75k星
  8. 华科开源多目标跟踪(MOT)实时新SOTA:FairMOT
  9. linux重装lnmp,基于CentOS 6.5的LNMP安装过程
  10. Error:File read error (source insight 4.0错误)