Flutter应用日志记录插件rangers_applog_flutter_plugin的使用

Flutter应用日志记录插件rangers_applog_flutter_plugin的使用

集成 Install plugin

添加依赖 Add dependency in pubspec.yaml

pubspec.yaml文件中添加以下依赖:

dependencies:
    rangers_applog_flutter_plugin: ^1.1.0

安装插件 Install plugin

运行以下命令以安装插件:

flutter packages get

iOS

Podfile

Podfile中添加源命令:

source 'https://cdn.cocoapods.org'
source 'https://github.com/bytedance/cocoapods_sdk_source_repo.git'
source 'https://github.com/volcengine/volcengine-specs.git'

添加RangersAppLog依赖(针对中国区上报):

  pod 'RangersAppLog', '~> 6.3.2', :subspecs => ['Core', 'Log', 'Host/CN']
初始化 Init SDK

可以在原生代码或者Dart代码中进行SDK的初始化。

  1. 原生侧 Native side

    在原生的AppDelegate.m中初始化:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 初始化SDK
        [RangersApplogFlutterPlugin initRangersAppLog:@"123456" channel:@"test_channel" enableAB:YES enableEncrypt:NO enableLog:YES host:nil];
        return YES;
    }
    
  2. Dart侧 Dart side

    在Dart代码中初始化:

    void initAppLog() async {
      print('初始化开始');
      try {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        String appId = prefs.getString('finder_app_id') ?? '';
        String channel = prefs.getString('finder_channel') ?? '';
        String? host = prefs.getString('finder_host');
        String region = prefs.getString('finder_region') ?? '';
        String serviceVendor = prefs.getString('finder_service_vendor') ?? '';
        bool enableAb = prefs.getBool('finder_enable_ab') ?? false;
        bool enableLog = prefs.getBool('finder_enable_log') ?? false;
        bool enableEncrypt = prefs.getBool('finder_enable_encrypt') ?? false;
        bool autoStart = prefs.getBool('finder_auto_start') ?? true;
        Map<String, dynamic> initParams = {
          'region': region,
          'autoStart': autoStart,
          'service_vendor': serviceVendor
        };
        RangersApplogFlutterPlugin.addInitParams(initParams);
        RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAb, enableEncrypt, enableLog, host);
        print('初始化成功');
        toast('初始化成功,参数为:appid=$appId,channel=$channel,host=$host,region=$region,serviceVendor=$serviceVendor,enableAb=$enableAb,enableLog=$enableLog,enableEncrypt=$enableEncrypt,autoStart=$autoStart');
      } catch (e) {
        print('初始化异常');
        toast('初始化异常');
      }
    }
    

注册插件 Register plugin

AppDelegate.m中注册插件:

#import "GeneratedPluginRegistrant.h"
#import <rangers_applog_flutter_plugin/RangersApplogFlutterPlugin.h>

@implementation GeneratedPluginRegistrant

+ (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry {
  [RangersApplogFlutterPlugin registerWithRegistrar:[registry registrarForPlugin:@"RangersApplogFlutterPlugin"]];
}

@end

Android

初始化 Init SDK
  1. 原生侧 Native side

    在Android原生工程中集成依赖并初始化RangersAppLog,请参考Android集成文档

  2. Dart侧 Dart side

    在Dart代码中初始化:

    void initAppLog() async {
      print('初始化开始');
      try {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        String appId = prefs.getString('finder_app_id') ?? '';
        String channel = prefs.getString('finder_channel') ?? '';
        String? host = prefs.getString('finder_host');
        String region = prefs.getString('finder_region') ?? '';
        String serviceVendor = prefs.getString('finder_service_vendor') ?? '';
        bool enableAb = prefs.getBool('finder_enable_ab') ?? false;
        bool enableLog = prefs.getBool('finder_enable_log') ?? false;
        bool enableEncrypt = prefs.getBool('finder_enable_encrypt') ?? false;
        bool autoStart = prefs.getBool('finder_auto_start') ?? true;
        Map<String, dynamic> initParams = {
          'region': region,
          'autoStart': autoStart,
          'service_vendor': serviceVendor
        };
        RangersApplogFlutterPlugin.addInitParams(initParams);
        RangersApplogFlutterPlugin.initRangersAppLog(appId, channel, enableAb, enableEncrypt, enableLog, host);
        print('初始化成功');
        toast('初始化成功,参数为:appid=$appId,channel=$channel,host=$host,region=$region,serviceVendor=$serviceVendor,enableAb=$enableAb,enableLog=$enableLog,enableEncrypt=$enableEncrypt,autoStart=$autoStart');
      } catch (e) {
        print('初始化异常');
        toast('初始化异常');
      }
    }
    

使用示例 Usage example

在Dart代码中使用插件记录事件:

RangersApplogFlutterPlugin.onEventV3("test_event_name", {"event_param": "param_value"});

示例代码 Example Code

以下是完整的示例代码,包括初始化和事件记录:

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:rangers_applog_flutter_plugin/autotrack.dart';
import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:fluttertoast/fluttertoast.dart';

import 'common.dart';
import 'home.dart';
import 'page2.dart';
import 'page3.dart';
import 'settings.dart';
import 'profile.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    initAppLog();
    initAutoTrack();
    super.initState();
  }

  void initAppLog() async {
    print('初始化开始');
    try {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      String appId = prefs.getString('finder_app_id') ?? '';
      String channel = prefs.getString('finder_channel') ?? '';
      String? host = prefs.getString('finder_host');
      String region = prefs.getString('finder_region') ?? '';
      String serviceVendor = prefs.getString('finder_service_vendor') ?? '';
      bool enableAb = prefs.getBool('finder_enable_ab') ?? false;
      bool enableLog = prefs.getBool('finder_enable_log') ?? false;
      bool enableEncrypt = prefs.getBool('finder_enable_encrypt') ?? false;
      bool autoStart = prefs.getBool('finder_auto_start') ?? true;
      Map<String, dynamic> initParams = {
        'region': region,
        'autoStart': autoStart,
        'service_vendor': serviceVendor
      };
      RangersApplogFlutterPlugin.addInitParams(initParams);
      RangersApplogFlutterPlugin.initRangersAppLog(
          appId, channel, enableAb, enableEncrypt, enableLog, host);
      print('初始化成功');
      toast('初始化成功,参数为:appid=$appId,channel=$channel,host=$host,region=$region,serviceVendor=$serviceVendor,enableAb=$enableAb,enableLog=$enableLog,enableEncrypt=$enableEncrypt,autoStart=$autoStart');
    } catch (e) {
      print('初始化异常');
      toast('初始化异常');
    }
  }

  void initAutoTrack() async {
    try {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      bool autoTrackEnable = prefs.getBool('auto_track_enable') ?? true;
      bool pageViewEnable = prefs.getBool('page_view_enable') ?? true;
      bool pageLeaveEnable = prefs.getBool('page_leave_enable') ?? false;
      bool clickEnable = prefs.getBool('click_enable') ?? true;
      RangersApplogAutoTrack instance = RangersApplogAutoTrack()
          .config(RangersApplogAutoTrackConfig(
            pageConfigs: [
              RangersApplogAutoTrackPageConfig<Home>(
                pageID: 'home-id',
                pagePath: '/home-custom',
                ignore: false,
              ),
              RangersApplogAutoTrackPageConfig<Page2>(
                pageID: 'page2-id',
              ),
              RangersApplogAutoTrackPageConfig<Page3>(
                pageID: 'page3-id',
              ),
            ],
            ignoreElementKeys: [],
          ))
          .enableLog();
      if(autoTrackEnable){
        instance.enable();
      }else{
        instance.disable();
      }
      if (pageViewEnable) {
        instance.enablePageView();
      } else {
        instance.disablePageView();
      }
      if (pageLeaveEnable) {
        instance.enablePageLeave();
      } else {
        instance.disablePageLeave();
      }
      if (clickEnable) {
        instance.enableClick();
      } else {
        instance.disableClick();
      }
    } catch (e) {}
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: RangersApplogNavigationObserver.wrap([]),
      initialRoute: '/',
      routes: {
        '/': ((context) => Home()),
        '/page2': ((context) => Page2()),
        '/page3': ((context) => Page3()),
        '/page-settings': ((context) => Settings()),
        '/profile': ((context) => Profile())
      },
    );
  }
}

更多关于Flutter应用日志记录插件rangers_applog_flutter_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用日志记录插件rangers_applog_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用rangers_applog_flutter_plugin进行日志记录的代码示例。

首先,确保你已经在pubspec.yaml文件中添加了该插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  rangers_applog_flutter_plugin: ^最新版本号  # 请替换为实际最新版本号

然后,运行flutter pub get来安装插件。

接下来,在你的Flutter应用中,你可以按照以下步骤使用rangers_applog_flutter_plugin进行日志记录。

1. 导入插件

在你的Dart文件中导入插件:

import 'package:rangers_applog_flutter_plugin/rangers_applog_flutter_plugin.dart';

2. 初始化插件

在应用启动时初始化插件,通常在main.dart文件的void main()函数中:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化日志插件
  RangersAppLogFlutterPlugin.instance.init();
  
  runApp(MyApp());
}

3. 记录日志

你可以使用插件提供的方法来记录不同级别的日志。以下是一些示例:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('日志记录示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 记录普通日志
              RangersAppLogFlutterPlugin.instance.log("这是一条普通日志");
              
              // 记录调试日志
              RangersAppLogFlutterPlugin.instance.debug("这是一条调试日志");
              
              // 记录信息日志
              RangersAppLogFlutterPlugin.instance.info("这是一条信息日志");
              
              // 记录警告日志
              RangersAppLogFlutterPlugin.instance.warn("这是一条警告日志");
              
              // 记录错误日志
              RangersAppLogFlutterPlugin.instance.error("这是一条错误日志");
            },
            child: Text('记录日志'),
          ),
        ),
      ),
    );
  }
}

4. 配置日志输出(可选)

根据插件的文档,你可能还可以配置日志的输出格式、输出目标(如文件、控制台等)。不过,具体配置方法需要参考插件的官方文档和示例代码,因为不同插件可能有不同的配置方式。

注意事项

  • 确保插件版本与你的Flutter SDK版本兼容。
  • 仔细阅读插件的官方文档,了解所有可用功能和配置选项。
  • 在生产环境中使用时,注意日志的敏感信息,避免泄露用户隐私或应用内部数据。

这个示例展示了如何在Flutter应用中使用rangers_applog_flutter_plugin进行日志记录。根据你的实际需求,你可以进一步定制和扩展日志记录功能。

回到顶部