Skip to content

Commit 5ad3134

Browse files
author
weiqiangliu
committed
Release 2.1.0
1 parent 2c17e64 commit 5ad3134

File tree

15 files changed

+455
-179
lines changed

15 files changed

+455
-179
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.1.0
2+
3+
* 支持 Flutter 项目延迟初始化 SDK
4+
15
## 2.0.4
26

37
* 支持采集全埋点 SDK 版本号

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
```yml
1818
dependencies:
1919
# 添加神策 flutter plugin
20-
sensors_analytics_flutter_plugin: ^2.0.4
20+
sensors_analytics_flutter_plugin: ^2.1.0
2121
```
2222
2323
执行 flutter packages get 命令安装插件

android/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@ android {
3333
}
3434

3535
dependencies {
36-
api 'com.sensorsdata.analytics.android:SensorsAnalyticsSDK:4.4.9'
36+
api 'com.sensorsdata.analytics.android:SensorsAnalyticsSDK:6.4.1'
37+
//implementation 'org.json:json:20220320'
3738
}

android/src/main/java/com/sensorsdata/analytics/sensorsanalyticsflutterplugin/SensorsAnalyticsFlutterPlugin.java

Lines changed: 110 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.sensorsdata.analytics.sensorsanalyticsflutterplugin;
22

3+
import android.app.Activity;
34
import android.text.TextUtils;
45

56
import androidx.annotation.NonNull;
67

8+
import com.sensorsdata.analytics.android.sdk.SAConfigOptions;
79
import com.sensorsdata.analytics.android.sdk.SALog;
810
import com.sensorsdata.analytics.android.sdk.SensorsDataAPI;
911

@@ -19,30 +21,27 @@
1921
import java.util.Map;
2022

2123
import io.flutter.embedding.engine.plugins.FlutterPlugin;
24+
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
25+
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
2226
import io.flutter.plugin.common.MethodCall;
2327
import io.flutter.plugin.common.MethodChannel;
2428
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
2529
import io.flutter.plugin.common.MethodChannel.Result;
26-
import io.flutter.plugin.common.PluginRegistry.Registrar;
2730

2831
/**
2932
* Sensors Analytics Flutter Plugin
3033
*/
31-
public class SensorsAnalyticsFlutterPlugin implements FlutterPlugin, MethodCallHandler {
34+
public class SensorsAnalyticsFlutterPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {
3235
private MethodChannel channel;
36+
private Activity mActivity;
3337
private static final String TAG = "SA.SensorsAnalyticsFlutterPlugin";
3438

3539
@Override
3640
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
37-
channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "sensors_analytics_flutter_plugin");
41+
channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "sensors_analytics_flutter_plugin");
3842
channel.setMethodCallHandler(this);
3943
}
4044

41-
public static void registerWith(Registrar registrar) {
42-
final MethodChannel channel = new MethodChannel(registrar.messenger(), "sensors_analytics_flutter_plugin");
43-
channel.setMethodCallHandler(new SensorsAnalyticsFlutterPlugin());
44-
}
45-
4645
@Override
4746
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
4847
try {
@@ -174,15 +173,14 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
174173
case "profileUnsetPushId":
175174
profileUnsetPushId(list);
176175
break;
177-
case "enableDataCollect":
178-
enableDataCollect();
176+
case "init":
177+
startWithConfig(list);
179178
break;
180179
default:
181180
result.notImplemented();
182181
break;
183182
}
184183
} catch (Exception e) {
185-
e.printStackTrace();
186184
SALog.d(TAG, e.getMessage());
187185
}
188186
}
@@ -342,7 +340,9 @@ private void login(List list) {
342340
/**
343341
* trackViewScreen 触发 $AppViewScreen 事件
344342
*/
343+
@SuppressWarnings("deprecation")
345344
private void trackViewScreen(List list) {
345+
//使用了 Deprecated 方法,编译时会产生 xxxx 类使用或覆盖了已过时的 API。
346346
SensorsDataAPI.sharedInstance().trackViewScreen((String) list.get(0), assertProperties((Map) list.get(1)));
347347
}
348348

@@ -490,11 +490,86 @@ private void profileUnsetPushId(List list) {
490490
SensorsDataAPI.sharedInstance().profileUnsetPushId((String) list.get(0));
491491
}
492492

493-
/**
494-
* 开启数据采集
495-
*/
496-
private void enableDataCollect() {
497-
SensorsDataAPI.sharedInstance().enableDataCollect();
493+
private void startWithConfig(List list) {
494+
Map map = (Map) list.get(0);
495+
Object serverUrl = map.get("serverUrl");
496+
497+
SAConfigOptions configOptions = new SAConfigOptions(serverUrl == null ? "" : serverUrl.toString());
498+
Object autotrackTypes = map.get("autotrackTypes");
499+
if (autotrackTypes != null) {
500+
configOptions.setAutoTrackEventType((Integer) autotrackTypes);
501+
}
502+
503+
Object networkTypes = map.get("networkTypes");
504+
if (networkTypes != null) {
505+
configOptions.setNetworkTypePolicy((Integer) networkTypes);
506+
}
507+
508+
Object flushInterval = map.get("flushInterval");
509+
if (flushInterval != null) {
510+
configOptions.setFlushInterval((Integer) flushInterval);
511+
}
512+
513+
Object flushBulkSize = map.get("flushBulkSize");
514+
if (flushBulkSize != null) {
515+
configOptions.setFlushBulkSize((Integer) flushBulkSize);
516+
}
517+
518+
Object enableLog = map.get("enableLog");
519+
if (enableLog != null) {
520+
configOptions.enableLog((Boolean) enableLog);
521+
}
522+
523+
Object encrypt = map.get("encrypt");
524+
if (encrypt != null) {
525+
configOptions.enableEncrypt((Boolean) encrypt);
526+
}
527+
528+
Object heatMap = map.get("heatMap");
529+
if (heatMap != null) {
530+
configOptions.enableHeatMap((Boolean) heatMap);
531+
}
532+
533+
Object androidConfig = map.get("android");
534+
boolean jellybean = false;
535+
if (androidConfig != null) {
536+
Map androidConfigMap = (Map) androidConfig;
537+
Object maxCacheSize = androidConfigMap.get("maxCacheSize");
538+
if (maxCacheSize != null) {
539+
configOptions.setMaxCacheSize(Long.parseLong(maxCacheSize.toString()));
540+
}
541+
542+
Object jellybeanObj = androidConfigMap.get("jellybean");
543+
if (jellybeanObj != null) {
544+
jellybean = (boolean) jellybeanObj;
545+
}
546+
Object subProcessFlush = androidConfigMap.get("subProcessFlush");
547+
if (subProcessFlush != null && (boolean) subProcessFlush) {
548+
configOptions.enableSubProcessFlushData();
549+
}
550+
}
551+
552+
Object javaScriptBridge = map.get("javaScriptBridge");
553+
if (javaScriptBridge != null && (boolean) javaScriptBridge) {
554+
configOptions.enableJavaScriptBridge(jellybean);
555+
}
556+
557+
Object visualizedConfig = map.get("visualized");
558+
if (visualizedConfig != null) {
559+
Map visualizedConfigMap = (Map) visualizedConfig;
560+
Object autoTrack = visualizedConfigMap.get("autoTrack");
561+
if (autoTrack != null) {
562+
configOptions.enableVisualizedAutoTrack((Boolean) autoTrack);
563+
}
564+
565+
Object properties = visualizedConfigMap.get("properties");
566+
if (properties != null) {
567+
configOptions.enableVisualizedProperties((Boolean) properties);
568+
}
569+
}
570+
571+
572+
SensorsDataAPI.startWithConfigOptions(mActivity, configOptions);
498573
}
499574

500575
private JSONObject assertProperties(Map map) {
@@ -522,4 +597,23 @@ private String assertEventName(String eventName) {
522597
return eventName;
523598
}
524599

600+
@Override
601+
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
602+
mActivity = binding.getActivity();
603+
}
604+
605+
@Override
606+
public void onDetachedFromActivityForConfigChanges() {
607+
608+
}
609+
610+
@Override
611+
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
612+
mActivity = binding.getActivity();
613+
}
614+
615+
@Override
616+
public void onDetachedFromActivity() {
617+
mActivity = null;
618+
}
525619
}

example/android/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ android {
4545
// TODO: Add your own signing config for the release build.
4646
// Signing with the debug keys for now, so `flutter run --release` works.
4747
signingConfig signingConfigs.debug
48+
4849
}
4950
}
5051
}

example/android/app/src/main/java/com/sensorsdata/analytics/sensorsanalyticsflutterplugin_example/App.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,25 @@ public class App extends FlutterApplication {
1919
@Override
2020
public void onCreate() {
2121
super.onCreate();
22-
initSensorsDataAPI();
23-
}
24-
25-
/**
26-
* 初始化 Sensors Analytics SDK
27-
*/
28-
private void initSensorsDataAPI() {
29-
SAConfigOptions configOptions = new SAConfigOptions(SA_SERVER_URL);
30-
// 打开自动采集, 并指定追踪哪些 AutoTrack 事件
31-
configOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_START |
32-
SensorsAnalyticsAutoTrackEventType.APP_END |
33-
SensorsAnalyticsAutoTrackEventType.APP_VIEW_SCREEN |
34-
SensorsAnalyticsAutoTrackEventType.APP_CLICK)
35-
.enableTrackAppCrash()
36-
.enableVisualizedAutoTrack(true)
37-
//.disableDataCollect()
38-
.enableVisualizedAutoTrackConfirmDialog(true);
39-
SensorsDataAPI.startWithConfigOptions(this, configOptions);
40-
SensorsDataAPI.sharedInstance(this).trackFragmentAppViewScreen();
41-
SensorsDataAPI.sharedInstance().enableHeatMap();
22+
//initSensorsDataAPI();
4223
}
24+
//
25+
// /**
26+
// * 初始化 Sensors Analytics SDK
27+
// */
28+
// private void initSensorsDataAPI() {
29+
// SAConfigOptions configOptions = new SAConfigOptions(SA_SERVER_URL);
30+
// // 打开自动采集, 并指定追踪哪些 AutoTrack 事件
31+
// configOptions.setAutoTrackEventType(SensorsAnalyticsAutoTrackEventType.APP_START |
32+
// SensorsAnalyticsAutoTrackEventType.APP_END |
33+
// SensorsAnalyticsAutoTrackEventType.APP_VIEW_SCREEN |
34+
// SensorsAnalyticsAutoTrackEventType.APP_CLICK)
35+
// .enableTrackAppCrash()
36+
// .enableVisualizedAutoTrack(true)
37+
// //.disableDataCollect()
38+
// .enableVisualizedAutoTrackConfirmDialog(true);
39+
// SensorsDataAPI.startWithConfigOptions(this, configOptions);
40+
// SensorsDataAPI.sharedInstance(this).trackFragmentAppViewScreen();
41+
// SensorsDataAPI.sharedInstance().enableHeatMap();
42+
// }
4343
}

example/ios/Podfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Uncomment this line to define a global platform for your project
2-
# platform :ios, '9.0'
2+
platform :ios, '9.0'
33

44
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
55
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

example/ios/Podfile.lock

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
PODS:
22
- Flutter (1.0.0)
3-
- sensors_analytics_flutter_plugin (1.0.5):
3+
- sensors_analytics_flutter_plugin (2.0.4):
44
- Flutter
5-
- SensorsAnalyticsSDK
6-
- SensorsAnalyticsSDK (2.2.4):
7-
- SensorsAnalyticsSDK/Core (= 2.2.4)
8-
- SensorsAnalyticsSDK/Core (2.2.4)
5+
- SensorsAnalyticsSDK (>= 4.0.0)
6+
- SensorsAnalyticsSDK (4.3.4):
7+
- SensorsAnalyticsSDK/Core (= 4.3.4)
8+
- SensorsAnalyticsSDK/__Store (4.3.4)
9+
- SensorsAnalyticsSDK/AutoTrack (4.3.4):
10+
- SensorsAnalyticsSDK/Common
11+
- SensorsAnalyticsSDK/Base (4.3.4):
12+
- SensorsAnalyticsSDK/__Store
13+
- SensorsAnalyticsSDK/Common (4.3.4):
14+
- SensorsAnalyticsSDK/Extension
15+
- SensorsAnalyticsSDK/Core (4.3.4):
16+
- SensorsAnalyticsSDK/Common
17+
- SensorsAnalyticsSDK/Visualized
18+
- SensorsAnalyticsSDK/Extension (4.3.4):
19+
- SensorsAnalyticsSDK/Base
20+
- SensorsAnalyticsSDK/Visualized (4.3.4):
21+
- SensorsAnalyticsSDK/AutoTrack
922

1023
DEPENDENCIES:
1124
- Flutter (from `Flutter`)
@@ -22,10 +35,10 @@ EXTERNAL SOURCES:
2235
:path: ".symlinks/plugins/sensors_analytics_flutter_plugin/ios"
2336

2437
SPEC CHECKSUMS:
25-
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
26-
sensors_analytics_flutter_plugin: 28c92a16312453a6834eda00ee94d27a5406adf1
27-
SensorsAnalyticsSDK: d898a6b6427dc842fa8c54c4cfb17dcc8a7e2220
38+
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
39+
sensors_analytics_flutter_plugin: 3c172b37f8b6883c8ed3cb08ae19a49b84810faf
40+
SensorsAnalyticsSDK: 159263992e8bf2e61b18fff55939db826050764c
2841

29-
PODFILE CHECKSUM: 8e679eca47255a8ca8067c4c67aab20e64cb974d
42+
PODFILE CHECKSUM: 3aaee2e660a2a825e7c3beecb0e4a334b934f851
3043

31-
COCOAPODS: 1.9.3
44+
COCOAPODS: 1.11.2

example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@
149149
97C146EC1CF9000F007C117D /* Resources */,
150150
9705A1C41CF9048500538489 /* Embed Frameworks */,
151151
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
152-
98F6785E94D4D2429BB76349 /* [CP] Embed Pods Frameworks */,
153152
E8A8BB4362F2A70380297AAA /* [CP] Copy Pods Resources */,
154153
);
155154
buildRules = (
@@ -236,23 +235,6 @@
236235
shellPath = /bin/sh;
237236
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
238237
};
239-
98F6785E94D4D2429BB76349 /* [CP] Embed Pods Frameworks */ = {
240-
isa = PBXShellScriptBuildPhase;
241-
buildActionMask = 2147483647;
242-
files = (
243-
);
244-
inputFileListPaths = (
245-
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
246-
);
247-
name = "[CP] Embed Pods Frameworks";
248-
outputFileListPaths = (
249-
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
250-
);
251-
runOnlyForDeploymentPostprocessing = 0;
252-
shellPath = /bin/sh;
253-
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
254-
showEnvVarsInLog = 0;
255-
};
256238
E8A8BB4362F2A70380297AAA /* [CP] Copy Pods Resources */ = {
257239
isa = PBXShellScriptBuildPhase;
258240
buildActionMask = 2147483647;
@@ -397,7 +379,7 @@
397379
"$(inherited)",
398380
"$(PROJECT_DIR)/Flutter",
399381
);
400-
PRODUCT_BUNDLE_IDENTIFIER = com.sensorsdata.analytics.sensorsanalyticsflutterpluginExample;
382+
PRODUCT_BUNDLE_IDENTIFIER = cn.sensorsdata.flutterpluginExample;
401383
PRODUCT_NAME = "$(TARGET_NAME)";
402384
VERSIONING_SYSTEM = "apple-generic";
403385
};
@@ -514,6 +496,7 @@
514496
buildSettings = {
515497
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
516498
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
499+
DEVELOPMENT_TEAM = 75FYWDWHL5;
517500
ENABLE_BITCODE = NO;
518501
FRAMEWORK_SEARCH_PATHS = (
519502
"$(inherited)",
@@ -528,7 +511,7 @@
528511
"$(inherited)",
529512
"$(PROJECT_DIR)/Flutter",
530513
);
531-
PRODUCT_BUNDLE_IDENTIFIER = com.sensorsdata.analytics.sensorsanalyticsflutterpluginExample;
514+
PRODUCT_BUNDLE_IDENTIFIER = cn.sensorsdata.flutterpluginExample;
532515
PRODUCT_NAME = "$(TARGET_NAME)";
533516
VERSIONING_SYSTEM = "apple-generic";
534517
};
@@ -554,7 +537,7 @@
554537
"$(inherited)",
555538
"$(PROJECT_DIR)/Flutter",
556539
);
557-
PRODUCT_BUNDLE_IDENTIFIER = com.sensorsdata.analytics.sensorsanalyticsflutterpluginExample;
540+
PRODUCT_BUNDLE_IDENTIFIER = cn.sensorsdata.flutterpluginExample;
558541
PRODUCT_NAME = "$(TARGET_NAME)";
559542
VERSIONING_SYSTEM = "apple-generic";
560543
};

0 commit comments

Comments
 (0)