Skip to content

Commit 226add4

Browse files
author
chenru
committed
Release 2.0.1
1 parent eb16ccc commit 226add4

17 files changed

+936
-45
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
## 基本要求
1212
App 元素点击事件要求 React Native 0.23 ~ 0.61.5;
13-
App 页面浏览事件要求 React Navigation ^2.0 ~ ^4.0。
13+
App 页面浏览事件要求 React Navigation ^2.0 ~ ^4.0;
14+
App 可视化全埋点要求 React Native 0.46 ~ 0.60。
1415

1516
## 集成方式
1617
### 安装 React Native 模块

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.0.0"
4+
s.version = "2.0.1"
55
s.summary = "The official React Native SDK of Sensors Analytics."
66
s.description = <<-DESC
77
神策分析 RN 组件

SensorsDataRNHook.js

Lines changed: 292 additions & 18 deletions
Large diffs are not rendered by default.

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.facebook.react.bridge.ReadableMap;
88
import com.sensorsdata.analytics.RNSensorsAnalyticsModule;
99
import com.sensorsdata.analytics.utils.RNViewUtils;
10+
import com.sensorsdata.analytics.data.ViewProperties;
1011

1112
import com.facebook.react.uimanager.JSTouchDispatcher;
1213
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -20,9 +21,11 @@
2021
import java.util.WeakHashMap;
2122
import java.util.HashMap;
2223
import org.json.JSONObject;
24+
import android.util.SparseArray;
2325

2426
public class RNAgent {
2527
private static final WeakHashMap jsTouchDispatcherViewGroupWeakHashMap = new WeakHashMap();
28+
private static SparseArray<ViewProperties> viewPropertiesArray = new SparseArray();
2629

2730
public static void handleTouchEvent(
2831
JSTouchDispatcher jsTouchDispatcher, MotionEvent event, EventDispatcher eventDispatcher) {
@@ -107,4 +110,33 @@ public static void trackViewClick(int viewId){
107110
SALog.printStackTrace(e);
108111
}
109112
}
113+
114+
public static void saveViewProperties(int viewId, boolean clickable, ReadableMap viewProperties) {
115+
if(clickable){
116+
viewPropertiesArray.put(viewId, new ViewProperties(clickable,viewProperties));
117+
}
118+
}
119+
120+
public static void addView(View view,int index){
121+
ViewProperties properties = viewPropertiesArray.get(view.getId());
122+
if(properties != null){
123+
properties.setViewProperty(view);
124+
}
125+
}
126+
127+
/**
128+
* 忽略 Slider、Switch Android SDK 的采集逻辑,统一通过 Recat Native 采集
129+
*/
130+
static void ignoreView(){
131+
try{
132+
SensorsDataAPI.sharedInstance().ignoreViewType(Class.forName("com.facebook.react.views.switchview.ReactSwitch"));
133+
}catch (Exception e){
134+
135+
}
136+
try{
137+
SensorsDataAPI.sharedInstance().ignoreViewType(Class.forName("com.facebook.react.views.slider.ReactSlider"));
138+
}catch (Exception e){
139+
140+
}
141+
}
110142
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -652,13 +652,13 @@ public void trackChannelEvent(String eventName, ReadableMap properties) {
652652
* <p>
653653
* RN 中使用示例:
654654
* <Button title="Button" onPress={()=>
655-
* RNSensorsAnalyticsModule.identify(distinctId)}>
655+
* RNSensorsAnalyticsModule.identify(anonymousId)}>
656656
* </Button>
657657
*/
658658
@ReactMethod
659-
public void identify(String distinctId) {
659+
public void identify(String anonymousId) {
660660
try {
661-
SensorsDataAPI.sharedInstance().identify(distinctId);
661+
SensorsDataAPI.sharedInstance().identify(anonymousId);
662662
} catch (Exception e) {
663663
e.printStackTrace();
664664
Log.e(LOGTAG, e.toString() + "");

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
public class RNSensorsAnalyticsPackage implements ReactPackage {
18-
public static final String VERSION = "2.0.0";
18+
public static final String VERSION = "2.0.1";
1919
@Override
2020
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
2121
List<NativeModule> modules = new ArrayList<>();

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.util.Log;
2323

2424
import com.facebook.react.bridge.Callback;
25+
import com.facebook.react.bridge.LifecycleEventListener;
2526
import com.facebook.react.bridge.Promise;
2627
import com.facebook.react.bridge.ReactApplicationContext;
2728
import com.facebook.react.bridge.ReactContextBaseJavaModule;
@@ -54,10 +55,16 @@
5455
* ReadableArray -> Array
5556
*/
5657

57-
public class RNSensorsDataModule extends ReactContextBaseJavaModule {
58+
public class RNSensorsDataModule extends ReactContextBaseJavaModule{
5859

5960
public RNSensorsDataModule(ReactApplicationContext reactContext) {
6061
super(reactContext);
62+
try{
63+
reactContext.addLifecycleEventListener(new SensorsDataLifecycleListener());
64+
}catch(Exception e){
65+
66+
}
67+
RNAgent.ignoreView();
6168
}
6269

6370
private static final String MODULE_NAME = "RNSensorsDataModule";
@@ -107,4 +114,23 @@ public void trackViewScreen(ReadableMap params) {
107114
SALog.printStackTrace(e);
108115
}
109116
}
117+
118+
@ReactMethod
119+
public void saveViewProperties(int viewId, boolean clickable, ReadableMap viewProperties) {
120+
RNAgent.saveViewProperties(viewId, clickable, viewProperties);
121+
}
122+
123+
class SensorsDataLifecycleListener implements LifecycleEventListener {
124+
public void onHostResume() {
125+
RNViewUtils.setScreenVisiable(true);
126+
}
127+
128+
public void onHostPause() {
129+
RNViewUtils.setScreenVisiable(false);
130+
}
131+
132+
public void onHostDestroy() {
133+
134+
}
135+
}
110136
}

android/src/main/java/com/sensorsdata/analytics/utils/RNViewUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
import android.view.ViewGroup;
1414
import android.view.View;
1515
import android.view.ViewParent;
16+
import org.json.JSONObject;
1617

1718
public class RNViewUtils {
1819

1920
private static WeakReference onTouchViewReference;
2021
private static String currentTitle;
2122
private static String currentScreenName;
23+
public static boolean isScreenVisiable = false;
24+
private static JSONObject properties = new JSONObject();
2225

2326
public static void setOnTouchView(View nativeTargetView) {
2427
onTouchViewReference = new WeakReference(nativeTargetView);
@@ -110,6 +113,13 @@ public static NativeViewHierarchyManager getNativeViewHierarchyManager(
110113
public static void saveScreenAndTitle(String screenName,String title){
111114
currentScreenName = screenName;
112115
currentTitle = title;
116+
try{
117+
properties.put("$title", title);
118+
properties.put("$screen_name", screenName);
119+
}catch (Exception e){
120+
121+
}
122+
113123
}
114124

115125
public static String getTitle(){
@@ -119,4 +129,19 @@ public static String getTitle(){
119129
public static String getScreenName(){
120130
return currentScreenName;
121131
}
132+
133+
/**
134+
* 供可视化调用,返回 $title,$screen_name
135+
* @return json 格式
136+
*/
137+
public static String getVisualizeProperties(){
138+
if(!isScreenVisiable){
139+
return "";
140+
}
141+
return properties.toString();
142+
}
143+
144+
public static void setScreenVisiable(boolean isVisiable){
145+
isScreenVisiable = isVisiable;
146+
}
122147
}

0 commit comments

Comments
 (0)