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的初始化。
-
原生侧 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; }
-
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
-
原生侧 Native side
在Android原生工程中集成依赖并初始化RangersAppLog,请参考Android集成文档。
-
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
更多关于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
进行日志记录。根据你的实际需求,你可以进一步定制和扩展日志记录功能。