Skip to content

Commit cd19744

Browse files
author
weiqiangliu
committed
Release 2.1.2
1 parent 4375d97 commit cd19744

File tree

7 files changed

+112
-40
lines changed

7 files changed

+112
-40
lines changed

RNSensorsAnalyticsModule.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Pod::Spec.new do |s|
33
s.name = "RNSensorsAnalyticsModule"
4-
s.version = "2.1.1"
4+
s.version = "2.1.2"
55
s.summary = "The official React Native SDK of Sensors Analytics."
66
s.description = <<-DESC
77
神策分析 RN 组件

SensorsDataRNHook.js

Lines changed: 94 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
var path = require("path"),
44
fs = require("fs"),
55
dir = path.resolve(__dirname, "..");
6+
var userPackageJson = require("../../package.json");
7+
var ignoreScreen = false;
8+
if (userPackageJson && userPackageJson['sensorsData'] && userPackageJson['sensorsData']['ignoreScreen']) {
9+
ignoreScreen = true;
10+
}
611
var reactNavigationPath = dir + '/react-navigation',
712
reactNavigationPath3X = dir + '/@react-navigation/native/src',
813
reactNavigationPath4X = dir + '/@react-navigation/native/lib/module',
@@ -135,11 +140,18 @@ var sensorsdataNavigation5HookCode = `
135140
saProperties.sensorsdataurl = params.sensorsdataurl;
136141
}
137142
if(params.sensorsdataparams){
138-
saProperties.sensorsdataparams = params.sensorsdataparams;
143+
saProperties.sensorsdataparams = JSON.parse(JSON.stringify(params.sensorsdataparams));
139144
}
140145
} else {
141146
saProperties.sensorsdataurl = screenName;
142147
}
148+
if(${ignoreScreen}){
149+
if(saProperties.sensorsdataparams){
150+
saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
151+
}else{
152+
saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
153+
}
154+
}
143155
var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
144156
dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
145157
}
@@ -194,11 +206,18 @@ var sensorsDataHookReduxCreateCode =
194206
saProperties.sensorsdataurl = params.sensorsdataurl;
195207
}
196208
if(params.sensorsdataparams){
197-
saProperties.sensorsdataparams = params.sensorsdataparams;
209+
saProperties.sensorsdataparams = JSON.parse(JSON.stringify(params.sensorsdataparams));
198210
}
199211
} else {
200212
saProperties.sensorsdataurl = screenName;
201213
}
214+
if(${ignoreScreen}){
215+
if(saProperties.sensorsdataparams){
216+
saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
217+
}else{
218+
saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
219+
}
220+
}
202221
var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
203222
dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
204223
}
@@ -267,11 +286,18 @@ var sensorsDataHookReduxMiddleCode = `
267286
saProperties.sensorsdataurl = params.sensorsdataurl;
268287
}
269288
if(params.sensorsdataparams){
270-
saProperties.sensorsdataparams = params.sensorsdataparams;
289+
saProperties.sensorsdataparams = JSON.parse(JSON.stringify(params.sensorsdataparams));
271290
}
272291
} else {
273292
saProperties.sensorsdataurl = screenName;
274293
}
294+
if(${ignoreScreen}){
295+
if(saProperties.sensorsdataparams){
296+
saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
297+
}else{
298+
saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
299+
}
300+
}
275301
var dataModule = ReactNative?.NativeModules?.RNSensorsDataModule;
276302
dataModule?.trackViewScreen && dataModule.trackViewScreen(saProperties);
277303
}
@@ -865,7 +891,7 @@ navigationString3 = function (
865891
saProperties.sensorsdataurl = route.params.sensorsdataurl;
866892
}
867893
if(route.params.sensorsdataparams){
868-
saProperties.sensorsdataparams = route.params.sensorsdataparams;
894+
saProperties.sensorsdataparams = JSON.parse(JSON.stringify(route.params.sensorsdataparams));
869895
}
870896
} else {
871897
saProperties = {sensorsdataurl:route.routeName};
@@ -898,6 +924,13 @@ navigationString3 = function (
898924

899925
script = `
900926
${script} var params = $$$getActivePageName$$$(${currentStateVarName});
927+
if(${ignoreScreen}){
928+
if(params.sensorsdataparams){
929+
params.sensorsdataparams.SAIgnoreViewScreen = true;
930+
}else{
931+
params.sensorsdataparams = {SAIgnoreViewScreen : true};
932+
}
933+
}
901934
if (require('react-native').Platform.OS === 'android') {
902935
if (${prevStateVarName}){
903936
var prevParams = $$$getActivePageName$$$(${prevStateVarName});
@@ -933,6 +966,13 @@ navigationEventString = function () {
933966
saProperties.sensorsdataurl = payload.state.routeName;
934967
}
935968
if(type == 'didFocus') {
969+
if(${ignoreScreen}){
970+
if(saProperties.sensorsdataparams){
971+
saProperties.sensorsdataparams.SAIgnoreViewScreen = true;
972+
}else{
973+
saProperties.sensorsdataparams = {SAIgnoreViewScreen : true};
974+
}
975+
}
936976
var ReactNative = require('react-native');
937977
var dataModule = ReactNative.NativeModules.RNSensorsDataModule;
938978
dataModule && dataModule.trackViewScreen && dataModule.trackViewScreen(saProperties);
@@ -957,7 +997,7 @@ navigationString = function (currentStateVarName, actionName) {
957997
saProperties.sensorsdataurl = route.params.sensorsdataurl;
958998
}
959999
if(route.params.sensorsdataparams){
960-
saProperties.sensorsdataparams = route.params.sensorsdataparams;
1000+
saProperties.sensorsdataparams = JSON.parse(JSON.stringify(route.params.sensorsdataparams));
9611001
}
9621002
} else {
9631003
saProperties.sensorsdataurl = route.routeName;
@@ -968,14 +1008,21 @@ navigationString = function (currentStateVarName, actionName) {
9681008

9691009
if (actionName) {
9701010
script = `${script}
971-
var type = ${actionName}.type;
972-
if(type == 'Navigation/SET_PARAMS' || type == 'Navigation/COMPLETE_TRANSITION') {
973-
return;
974-
}
975-
`;
1011+
var type = ${actionName}.type;
1012+
if(type == 'Navigation/SET_PARAMS' || type == 'Navigation/COMPLETE_TRANSITION') {
1013+
return;
1014+
}
1015+
`;
9761016
}
9771017

9781018
script = `${script} var params = $$$getActivePageName$$$(${currentStateVarName});
1019+
if(${ignoreScreen}){
1020+
if(params.sensorsdataparams){
1021+
params.sensorsdataparams.SAIgnoreViewScreen = true;
1022+
}else{
1023+
params.sensorsdataparams = {SAIgnoreViewScreen : true};
1024+
}
1025+
}
9791026
if (require('react-native').Platform.OS === 'android') {
9801027
var ReactNative = require('react-native');
9811028
var dataModule = ReactNative.NativeModules.RNSensorsDataModule;
@@ -1135,14 +1182,14 @@ injectReactNavigation = function (dirPath, type, reset = false) {
11351182
};
11361183

11371184
// hook pageview 文件
1138-
sensorsdataHookViewRN = function () {
1185+
sensorsdataHookNavigationRN = function () {
11391186
injectReactNavigation(reactNavigationPath, 1);
11401187
injectReactNavigation(reactNavigationPath3X, 2);
11411188
injectReactNavigation(reactNavigationPath4X, 2);
11421189
};
11431190

11441191
// 恢复被 hook 的 pageview 文件
1145-
sensorsdataResetViewRN = function () {
1192+
sensorsdataResetNavigationRN = function () {
11461193
injectReactNavigation(reactNavigationPath, 1, true);
11471194
injectReactNavigation(reactNavigationPath3X, 2, true);
11481195
injectReactNavigation(reactNavigationPath4X, 2, true);
@@ -1151,7 +1198,7 @@ sensorsdataResetViewRN = function () {
11511198
// 全部 hook 文件恢复
11521199
resetAllSensorsdataHookRN = function () {
11531200
sensorsdataResetRN(RNClickFilePath);
1154-
sensorsdataResetViewRN();
1201+
sensorsdataResetNavigationRN();
11551202
sensorsdataHookClickableRN(true);
11561203
// 2 期
11571204
sensorsdataHookSliderRN(true);
@@ -1167,20 +1214,40 @@ resetAllSensorsdataHookRN = function () {
11671214
};
11681215
// 全部 hook 文件
11691216
allSensorsdataHookRN = function () {
1170-
sensorsdataHookClickRN(RNClickFilePath);
1171-
sensorsdataHookViewRN();
1172-
sensorsdataHookClickableRN();
1173-
// 2 期
1174-
sensorsdataHookSliderRN();
1175-
sensorsdataHookSwitchRN();
1176-
sensorsdataHookSegmentedControlRN();
1177-
sensorsdataHookGestureButtonsRN(false)
1178-
// 3 期
1179-
sensorsdataHookPressabilityClickRN(RNClickPressabilityFilePath);
1180-
sensorsdataHookNavigation5();
1181-
// react-navigation-redux-helper
1182-
sensorsdataHookNavigationReduxCreate();
1183-
sensorsdataHookNavigationReduxMiddle(reactNavigationReduxMiddlePath);
1217+
if (ignoreScreen) {
1218+
console.log('ignore screen');
1219+
}
1220+
if (userPackageJson && userPackageJson['sensorsData']) {
1221+
var sensorsData = userPackageJson['sensorsData'];
1222+
if (sensorsData['ignoreClick']) {
1223+
console.log('ignore click');
1224+
} else {
1225+
sensorsdataHookClickRN(RNClickFilePath);
1226+
sensorsdataHookClickableRN();
1227+
// 2 期
1228+
sensorsdataHookSliderRN();
1229+
sensorsdataHookSwitchRN();
1230+
sensorsdataHookSegmentedControlRN();
1231+
sensorsdataHookGestureButtonsRN(false)
1232+
// 3 期
1233+
sensorsdataHookPressabilityClickRN(RNClickPressabilityFilePath);
1234+
}
1235+
} else {
1236+
sensorsdataHookClickRN(RNClickFilePath);
1237+
sensorsdataHookClickableRN();
1238+
// 2 期
1239+
sensorsdataHookSliderRN();
1240+
sensorsdataHookSwitchRN();
1241+
sensorsdataHookSegmentedControlRN();
1242+
sensorsdataHookGestureButtonsRN(false)
1243+
// 3 期
1244+
sensorsdataHookPressabilityClickRN(RNClickPressabilityFilePath);
1245+
}
1246+
sensorsdataHookNavigationRN();
1247+
sensorsdataHookNavigation5();
1248+
// react-navigation-redux-helper
1249+
sensorsdataHookNavigationReduxCreate();
1250+
sensorsdataHookNavigationReduxMiddle(reactNavigationReduxMiddlePath);
11841251
};
11851252
// 命令行
11861253
switch (process.argv[2]) {

android/src/main/java/com/sensorsdata/analytics/RNAgent.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,10 @@ static void trackViewScreen(String url, JSONObject properties, boolean isAuto) {
9797
properties.put("$title", title);
9898
}
9999
RNViewUtils.saveScreenAndTitle(screenName, title);
100-
//关闭 AutoTrack
101-
if (isAuto && !SensorsDataAPI.sharedInstance().isAutoTrackEnabled()) {
102-
return;
103-
}
104-
//$AppViewScreen 被过滤
105-
if (isAuto && SensorsDataAPI.sharedInstance().isAutoTrackEventTypeIgnored(SensorsDataAPI.AutoTrackEventType.APP_VIEW_SCREEN)) {
106-
return;
100+
if (isAuto && (properties.optBoolean("SAIgnoreViewScreen", false)
101+
|| !SensorsDataAPI.sharedInstance().isAutoTrackEnabled()
102+
|| SensorsDataAPI.sharedInstance().isAutoTrackEventTypeIgnored(SensorsDataAPI.AutoTrackEventType.APP_VIEW_SCREEN))) {
103+
return;
107104
}
108105
SensorsDataAPI.sharedInstance().trackViewScreen(url, RNPropertyManager.mergeProperty(properties, isAuto));
109106
} catch (Exception e) {
@@ -153,8 +150,9 @@ static void saveViewProperties(int viewId, boolean clickable, ReadableMap viewPr
153150

154151
/**
155152
* 添加 View 调用,Android 插件调用,勿删
153+
*
156154
* @param view View
157-
* @param index index
155+
* @param index index
158156
*/
159157
public static void addView(View view, int index) {
160158
SAViewProperties properties = viewPropertiesArray.get(view.getId());

android/src/main/java/com/sensorsdata/analytics/RNSensorsAnalyticsPackage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import java.util.List;
2929

3030
public class RNSensorsAnalyticsPackage implements ReactPackage {
31-
public static final String VERSION = "2.1.1";
31+
public static final String VERSION = "2.1.2";
3232
@Override
3333
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
3434
List<NativeModule> modules = new ArrayList<>();

ios/RNSensorsAnalyticsModule.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#import "SAReactNativeManager.h"
3333
#import "SAReactNativeEventProperty.h"
3434

35-
NSString *const kSAReactNativePluginVersion = @"react_native:2.1.1";
35+
NSString *const kSAReactNativePluginVersion = @"react_native:2.1.2";
3636

3737
@implementation RNSensorsAnalyticsModule
3838

ios/SAReactNativeManager.m

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,17 @@ - (void)trackViewScreen:(nullable NSString *)url properties:(nullable NSDictiona
213213
self.screenProperties = pageProps;
214214
});
215215

216+
// 忽略 React Native 触发的 $AppViewScreen 事件
217+
if (autoTrack && [properties[@"SAIgnoreViewScreen"] boolValue]) {
218+
return;
219+
}
220+
221+
// 检查 SDK 全埋点功能开启状态
216222
if (autoTrack && ![[SensorsAnalyticsSDK sharedInstance] isAutoTrackEnabled]) {
217223
return;
218224
}
219-
// 忽略 $AppViewScreen 事件
225+
226+
// 忽略所有 $AppViewScreen 事件
220227
if (autoTrack && [[SensorsAnalyticsSDK sharedInstance] isAutoTrackEventTypeIgnored:SensorsAnalyticsEventTypeAppViewScreen]) {
221228
return;
222229
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sensorsdata-analytics-react-native",
3-
"version": "2.1.1",
3+
"version": "2.1.2",
44
"private": false,
55
"description": "神策分析 RN 组件",
66
"main": "index.js",

0 commit comments

Comments
 (0)