CSDN-专业IT技术社区-登录​blog.csdn.net

开发插件要具备的知识: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 Flutter 项目中 pubspec.xml 文件中 配置插件

flutter_fai_umeng:

git:

url: https://github.com/zhaolongs/flutter_fai_umeng.git

ref: master

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” 及其各种大小写形式,作为【友盟+】保留的字段,不可以作为渠道名。

*

* 在您查看数据时,渠道会作为一个数据细分的维度。

* @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标签中,所以用ApplicationInfo

ApplicationInfo 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友盟分享_flutter中友盟插件开发使用相关推荐

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

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

  2. flutter友盟分享_Flutter 集成友盟 深坑

    对于友盟在Flutter上的集成,官方虽然给出了sdk(https://developer.umeng.com/sdk/flutter),但是不好使,是真的不好使,不信的可以去试试,安卓费劲调好以后, ...

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

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

  4. flutter 怎么拦截请求_flutter中事件传递:禁止用户交互 获取点击事件

    可能有时候会需要这种需求 比如文本框可以响应点击事件但是禁止用户输入 直接粗暴的设置 TextField(enabled: false,) 这样就无法得知ontap事件了, 当然你可以用 enable ...

  5. swift3.0友盟分享

    经过(一)的讲解,大家应该可以按照友盟提供的测试账号可以集成友盟分享了,友盟目前集合了18个APP共27种分享,可以授权的有10个App:微信.QQ.新浪微博.腾讯微博.人人网.豆瓣.Facebook ...

  6. 【无限互联】集成友盟分享SDK

    集成友盟分享SDK: 友盟注册:http://www.umeng.com/users/sign_up 注册之后登陆账号,点击"添加新应用"完成新应用填写之后,将进入应用管理页面.在 ...

  7. 解决微信登录出现{errcode:40163,errmsg:code been used, hints: [ req_id: jEFDVY4ce-jz9NSA ]} (前提是使用友盟分享)

    记录一下,记录一下. (真的想搞洗友盟) 前提是接入友盟分享SDK. 错误信息 {"errcode":40163,"errmsg":"code bee ...

  8. iOS友盟分享的一些问题

    初学iOS第一次用简书写文章 很慌. 自己遇到的问题 百度很久没找到 写出来让大家参考下 大佬们不要喷我. 背景 因为刚学iOS不久,师傅让写学习写一下友盟分享.说啥贼简单尝试写一下. 都说贼简单了, ...

  9. flutter友盟分享_集成推送那点事-友盟/Mob-Flutter/FCM

    第 97 次推文 LZ-Says 我们都曾羡慕别人,却忘了,我们也曾是别人羡慕的我们. 推荐直接拉到底阅读原文- 前言 最近的任务呐,真是让人蛋碎一地,各种被锤. 不过比较 nice 的是,推送凑齐了 ...

最新文章

  1. 利用DDA算法得到直线上的像素点坐标
  2. vsphere服务器虚拟化流程,VMware vSphere服务器虚拟化实验
  3. python读取csv文件制图-python读取CSV文件
  4. GridView跨行合并单元格
  5. Python 【企鹅号、QQ看点】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、视频号等平台的视频自动化同步发布
  6. Java文件流输入输出
  7. JS Window.Open 打开窗口详解
  8. python2.7安装matplotlib_Python安装Numpy和matplotlib
  9. UNITY C#内存泄漏
  10. 西北工业大学 计算机学院王云岚,王云岚
  11. vue脚手架中使用axios
  12. MongoDB 从节点 延迟的测试
  13. mysql按日、周、月、年分别统计数据
  14. 推荐 | 一个超好的OpenCV4学习社区
  15. IBM Lotus Domino Designer 下载安装记录
  16. w ndows无法完成格式化,win10系统windows无法完成格式化的处理方法
  17. 华为网络设备-NAT实验
  18. PUF论文整理2:2021_A_Novel_Modeling-Attack_Resilient_Arbiter-PUF_Design
  19. 翟菜花:以科创板的科技成色,错失联想是相当大的损失
  20. 阿里云云盾证书是什么?云盾证书有什么作用?

热门文章

  1. 【收藏】Win10自带的邮件客户端配置腾讯企业邮箱账号详解
  2. operator-sdk安装脚本整理
  3. 【收藏】Chrome 错误代码:ERR_UNSAFE_PORT
  4. k8s部署nfs-client-provisioner完整实践版(亲测有效)
  5. Deepin、Debian、Ubuntu恢复误删除的/var/lib/dpkg
  6. k8s edit命令使用示例
  7. java和jvm的再认识
  8. Java 8大原子操作
  9. Scala分支控制 if-else之单分支的使用
  10. Linux wc指令统计文件信息