美文网首页
flutter集成友盟统计(不带异常上报)史上最靠谱教程!!!

flutter集成友盟统计(不带异常上报)史上最靠谱教程!!!

作者: 优优切克闹 | 来源:发表于2020-10-16 16:43 被阅读0次

    任务:flutter集成友盟统计并有异常上报功能

    但是友盟不支持flutter的异常上报,所以现在的策略是,先集成友盟的基础行为统计,再集成bugly的异常上报功能
    下图为友盟不支持的证据:


    image.png

    由于友盟官网flutter集成文档写的有些太粗犷,为了避免可爱们蒙蔽,所以我决定 出一份集成教程。

    前期准备: (我的操作系统是Mac)

    • 集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册账号并且添加一个ios和一个Android新应用,获得AppKey。(集成要用)

      image.png
      image.png
    • 新建flutter项目(我是新建了一个flutter项目,所以建议你们也先新建项目,跟着我的教程集成没问题了再集成到自己项目里)并且有装cocoapods

    • 安装了xcode开发工具并安装了cocoapods第三方库管理工具(不会的自行Google哈)


    1.去官网下载umeng_flutter_demo.zip
    image.png
    2.双击解压下载的 umeng_flutter_demo,将根目录下的umeng_sdk文件夹拷贝到你自己项目的根目录下
    image.png
    image.png
    3.在pubspec.yaml中引入插件如下:
    umeng_sdk:
     path: ./umeng_sdk/
    
    image.png
    4.修改umeng_sdk/ios文件夹下umeng_sdk.podspec内容如下:
    s.dependency 'UMCCommon' ,  '2.1.4'
    s.dependency 'UMCAnalytics', '6.1.0'
    
    image.png
    5.找到工程main.dart文件,导入友盟sdk头文件并添加如下代码并运行项目
    import 'package:umeng_sdk/umeng_sdk.dart';
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
      void _incrementCounter() {
        setState(() {
          // This call to setState tells the Flutter framework that something has
          // changed in this State, which causes it to rerun the build method below
          // so that the display can reflect the updated values. If we changed
          // _counter without calling setState(), then the build method would not be
          // called again, and so nothing would appear to happen.
          _counter++;
        });
        UmengSdk.onEvent('bool', {'name':'jack', 'age':18, 'male':true});
      }
    
    image.png
    6.在终端运行如下命令生成对应的iOS平台代码
    flutter build ios --no-codesign
    
    image.png
    这一步会报错
    image.png
    platform version错误,解决方法是修改项目里的ios/Podfile文件:
    # Uncomment this line to define a global platform for your project
    # platform :ios, '9.0'
    platform :ios, '8.0' #增加的内容
    
    image.png
    再次运行终端命令:flutter build ios --no-codesign,依然报错
    image.png
    解决办法是再次打开iOS目录下的Podfile,注释或删除 use_frameworks!
    image.png
    重新运行终端命令:flutter build ios --no-codesign即可pod成功
    image.png
    7.开始ios端APPID配置~
    image.png
    command+B编译一下报错 如图:
    image.png
    原因是需要给你的工程指定一个Team 解决办法如下: image.png
    再次按 command + B编译,successded~~
    8.找到AppDelegate文件,加入iOS的初始化代码

    由于我是swift语言,所以我需要先在桥接文件中导入头文件(Object-C语言不需要这一步哈)

    #import <UMCommonLog/UMCommonLogHeaders.h>
    #import <UMCommon/UMConfigure.h>
    
    image.png

    下面是Swift和OC端各自需要配置的代码,大家对号入座~:

    • swift版本:找到AppDelegate.swift文件,加入iOS的初始化代码
        UMCommonLogManager.setUp()
        UMConfigure.setLogEnabled(true)
        UMConfigure.initWithAppkey("5861e5daf5ade41326001eab", channel: "App Store")
    
    image.png
    • oc版本:找到AppDelegate.m文件,加入iOS的初始化代码
    #import "GeneratedPluginRegistrant.h"
    #import <UMCommonLog/UMCommonLogHeaders.h>
    #import <UMCommon/UMConfigure.h>
    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [UMCommonLogManager setUpUMCommonLogManager];
        [UMConfigure setLogEnabled:YES];
        [UMConfigure initWithAppkey:@"5861e5daf5ade41326001eab" channel:@"App Store"];
      [GeneratedPluginRegistrant registerWithRegistry:self];
      // Override point for customization after application launch.
      return [super application:application didFinishLaunchingWithOptions:launchOptions];
    }
    
    9.测试ios端集成是否成功:
    • 全局搜索UMengflutterpluginForAnalytics,并在[MobClick event:eventName attributes:properties];处打断点

      image.png
    • 运行xcode工程,并点击屏幕右下角按钮,如果断点走了,则代表集成成功

    • 调试成功如下:

      image.png
      ios端集成demo地址

    高级功能

    Android与iOS都适用

    // 发送自定义事件(目前属性值支持字符、整数、浮点、长整数,暂不支持NULL、布尔、MAP、数组)
    UmengSdk.onEvent("VideoPlay", {"userID":"神秘账号", "channel":"wx", "playTime":10});
    
    // 设置用户账号
    UmengSdk.onProfileSignIn("user_id");
    
    // 取消用户账号
    UmengSdk.onProfileSignOff();
    
    // 如果需要使用页面统计,则先打开该设置
    UmengSdk.setPageCollectionModeManual();
    
    // 进入页面统计
    UmengSdk.onPageStart("viewName");
    
    // 离开页面统计
    UmengSdk.onPageEnd("viewName");
    
    // 如果不需要上述页面统计,在完成后可关闭该设置;如果没有用该功能可忽略;
    UmengSdk.setPageCollectionModeAuto();
    
    // 错误发送
    UmengSdk.reportError("后台程序执行时间过长");
    
    //页面采集
    可参考 lib/umeng_navigator_observer.dart 实现页面监控跳转;
    

    看到这里恭喜你已经成功了一半啦撒花花❀😊,不要松懈,下面我们开始集成Android端~(不好意思 Android端暂时搁浅)

    相关文章

      网友评论

          本文标题:flutter集成友盟统计(不带异常上报)史上最靠谱教程!!!

          本文链接:https://www.haomeiwen.com/subject/hmxzpktx.html