flutter集成友盟統(tǒng)計(不帶異常上報)史上最靠譜教程!?。?/h2>

任務:flutter集成友盟統(tǒng)計并有異常上報功能

但是友盟不支持flutter的異常上報,所以現(xiàn)在的策略是,先集成友盟的基礎(chǔ)行為統(tǒng)計,再集成bugly的異常上報功能
下圖為友盟不支持的證據(jù):


image.png

由于友盟官網(wǎng)flutter集成文檔寫的有些太粗獷,為了避免可愛們蒙蔽,所以我決定 出一份集成教程。

前期準備: (我的操作系統(tǒng)是Mac)

  • 集成【友盟+】SDK之前,您首先需要到 【友盟+】官網(wǎng)注冊賬號并且添加一個ios和一個Android新應用,獲得AppKey。(集成要用)

    image.png

    image.png

  • 新建flutter項目(我是新建了一個flutter項目,所以建議你們也先新建項目,跟著我的教程集成沒問題了再集成到自己項目里)并且有裝cocoapods

  • 安裝了xcode開發(fā)工具并安裝了cocoapods第三方庫管理工具(不會的自行Google哈)


1.去官網(wǎng)下載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內(nèi)容如下:
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' #增加的內(nèi)容

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工程,并點擊屏幕右下角按鈕,如果斷點走了,則代表集成成功

  • 調(diào)試成功如下:

    image.png

    ios端集成demo地址


高級功能

Android與iOS都適用

// 發(fā)送自定義事件(目前屬性值支持字符、整數(shù)、浮點、長整數(shù),暫不支持NULL、布爾、MAP、數(shù)組)
UmengSdk.onEvent("VideoPlay", {"userID":"神秘賬號", "channel":"wx", "playTime":10});

// 設(shè)置用戶賬號
UmengSdk.onProfileSignIn("user_id");

// 取消用戶賬號
UmengSdk.onProfileSignOff();

// 如果需要使用頁面統(tǒng)計,則先打開該設(shè)置
UmengSdk.setPageCollectionModeManual();

// 進入頁面統(tǒng)計
UmengSdk.onPageStart("viewName");

// 離開頁面統(tǒng)計
UmengSdk.onPageEnd("viewName");

// 如果不需要上述頁面統(tǒng)計,在完成后可關(guān)閉該設(shè)置;如果沒有用該功能可忽略;
UmengSdk.setPageCollectionModeAuto();

// 錯誤發(fā)送
UmengSdk.reportError("后臺程序執(zhí)行時間過長");

//頁面采集
可參考 lib/umeng_navigator_observer.dart 實現(xiàn)頁面監(jiān)控跳轉(zhuǎn);

看到這里恭喜你已經(jīng)成功了一半啦撒花花???,不要松懈,下面我們開始集成Android端~(不好意思 Android端暫時擱淺)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容