Android & iOS SDK 在 Flutter 中使用说明
神策 插件,封装了神策 Android & iOS SDK 常用 API ,使用此插件,可以在 Flutter 开发的 App 中完成埋点的统计上报。
1. 在项目中添加安装插件
在 Flutter 项目的 pubspec.yam
文件中添加 sensors_analytics_flutter_plugin
依赖
dependencies:
# 添加神策 flutter plugin
sensors_analytics_flutter_plugin: ^1.0.0
执行 flutter packages get 命令安装插件
flutter packages get
2. Android 端
在程序的入口 Application 的 onCreate()
中调用 SensorsDataAPI.sharedInstance()
初始化 SDK:
import io.flutter.app.FlutterApplication;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.sensorsdata.analytics.android.sdk.SensorsDataAPI;
import com.sensorsdata.analytics.android.sdk.SAConfigOptions;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class App extends FlutterApplication {
// debug 模式的数据接收地址 (测试,测试项目)
final static String SA_SERVER_URL_DEBUG = "【测试项目】数据接收地址";
// release 模式的数据接收地址(发版,正式项目)
final static String SA_SERVER_URL_RELEASE = "【正式项目】数据接收地址";
@Override
public void onCreate() {
super.onCreate();
// 在 Application 的 onCreate 初始化神策 SDK
initSensorsDataSDK(this);
}
/**
* 初始化 SDK 、开启自动采集
*/
private void initSensorsDataSDK(Context context) {
try {
// 初始化 SDK
SensorsDataAPI.sharedInstance(this,new SAConfigOptions(isDebugMode(this)?SA_SERVER_URL_DEBUG:SA_SERVER_URL_RELEASE));
// 打开自动采集, 并指定追踪哪些 AutoTrack 事件
List<SensorsDataAPI.AutoTrackEventType> eventTypeList = new ArrayList<>();
eventTypeList.add(SensorsDataAPI.AutoTrackEventType.APP_START);// $AppStart(启动事件)
eventTypeList.add(SensorsDataAPI.AutoTrackEventType.APP_END);// $AppEnd(退出事件)
SensorsDataAPI.sharedInstance().enableAutoTrack(eventTypeList);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param context App 的 Context
* @return debug return true,release return false
* 用于判断是 debug 包,还是 relase 包
*/
public static boolean isDebugMode(Context context) {
try {
ApplicationInfo info = context.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
3. iOS 端
在程序的入口(如 AppDelegate.m )中引入 SensorsAnalyticsSDK.h
,并在初始化方法(如 - application:didFinishLaunchingWithOptions:launchOptions
)中调用 sharedInstanceWithConfig:
初始化 SDK。
#import "SensorsAnalyticsSDK.h"
#ifdef DEBUG
#define SA_SERVER_URL @"<#【测试项目】数据接收地址#>"
#else
#define SA_SERVER_URL @"<#【正式项目】数据接收地址#>"
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self initSensorsAnalyticsWithLaunchOptions:launchOptions];
return YES;
}
- (void)initSensorsAnalyticsWithLaunchOptions:(NSDictionary *)launchOptions {
// 初始化 SDK
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:SA_SERVER_URL launchOptions:launchOptions];
[SensorsAnalyticsSDK sharedInstanceWithConfig:options];
// 打开自动采集, 并指定追踪哪些 AutoTrack 事件
//目前 flutter 只支持 $AppStart 和 $AppEnd
[[SensorsAnalyticsSDK sharedInstance] enableAutoTrack:SensorsAnalyticsEventTypeAppStart|
SensorsAnalyticsEventTypeAppEnd];
}
4. Flutter 中使用插件
在具体 dart
文件中导入 sensors_analytics_flutter_plugin.dart
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';
4.1 埋点事件
例如,触发事件名为 AddToFav ,对应的事件属性有:ProductID 和 UserLevel 的事件:
SensorsAnalyticsFlutterPlugin.track("AddToFav",{"ProductID":123456,"UserLevel":"VIP"});
4.2 设置用户属性
例如,设置用户 Age 属性:
SensorsAnalyticsFlutterPlugin.profileSet({"Age":18});