Flutter
Android & iOS SDK 在 Flutter 中使用说明
神策 sensors_analytics_flutter_plugin 外掛程式,封裝了神策 Android & iOS SDK 常用 API ,使用此外掛程式,可以在 Flutter 開發的 App 中完成埋點的統計上報。
1. 在專案中增加安裝外掛程式
在 Flutter 專案的 pubspec.yam 檔案中增加 sensors_analytics_flutter_plugin 依賴
dependencies:
# 增加神策 flutter plugin
sensors_analytics_flutter_plugin: ^1.0.2
YML
執行 flutter packages get 命令安裝外掛程式
flutter packages get
BASH
2. Android 端
在程式的入口 Application 的 onCreate() 中呼叫 SensorsDataAPI.startWithConfigOptions() 在 Main Thread 中初始化 SDK:
import android.app.Application;
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 com.sensorsdata.analytics.android.sdk.SensorsAnalyticsAutoTrackEventType;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class App extends Application {
// 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();
}
/**
* 初始化 SDK 、開啟自動採集
*/
private void initSensorsDataSDK() {
try {
// 設定 SAConfigOptions,傳入數據接收網址
SAConfigOptions saConfigOptions = new SAConfigOptions(isDebugMode(this) ? SA_SERVER_URL_DEBUG : SA_SERVER_URL_RELEASE);
// 透過 SAConfigOptions 設定神策 SDK 自動採集 options (Flutter 專案只支援 App 啟動、退出自動採集)
saConfigOptions.setAutoTrackEventType(
SensorsAnalyticsAutoTrackEventType.APP_START | // 開啟自動採集 App 啟動事件
SensorsAnalyticsAutoTrackEventType.APP_END) // 開啟自動採集 App 退出事件
.enableLog(isDebugMode(this)) // 開啟神策除錯 log,預設關閉(除錯時,可開啟 log)。
.enableTrackAppCrash(); // 開啟 crash 採集
// 需要在 Main Thread 初始化神策 SDK
SensorsDataAPI.startWithConfigOptions(this, saConfigOptions);
} 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;
}
}
}
JAVA
3. iOS 端
在程式的入口(如 AppDelegate.m )中引入 SensorsAnalyticsSDK.h,並在初始化方法(如 - application:didFinishLaunchingWithOptions:launchOptions )中呼叫 sharedInstanceWithConfig: 在 Main Thread 中初始化 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 自動採集 options(Flutter 專案只支援 App 啟動、退出自動採集)
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:SA_SERVER_URL launchOptions:launchOptions];
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart | SensorsAnalyticsEventTypeAppEnd;
// 需要在 Main Thread 中初始化 SDK
[SensorsAnalyticsSDK startWithConfigOptions:options];
}
CODE
4. Flutter 中使用外掛程式
在實際 dart 檔案中匯入 sensors_analytics_flutter_plugin.dart
import 'package:sensors_analytics_flutter_plugin/sensors_analytics_flutter_plugin.dart';
CODE
4.1 埋點事件
例如,觸發事件名為 AddToFav ,對應的事件屬性有:ProductID 和 UserLevel 的事件:
SensorsAnalyticsFlutterPlugin.track("AddToFav",{"ProductID":123456,"UserLevel":"VIP"});
CODE
4.2 設定用户屬性
例如,設定用戶 Age 屬性:
SensorsAnalyticsFlutterPlugin.profileSet({"Age":18});
CODE