Browse Source

增加部分埋点

zk 1 year ago
parent
commit
896c1ab6f6

+ 11 - 4
app/src/main/java/com/datarecovery/master/data/consts/EventId.java

@@ -3,9 +3,13 @@ package com.datarecovery.master.data.consts;
 public interface EventId {
 
     String EVENT_ID = "id";
+    String EVENT_TYPE1 = "type1";
     String hf1000101 = "hf1000101"; // 启动页-隐私弹窗-同意并继续
     String hf1000201 = "hf1000201"; // 启动页-温馨提示-同意
     String hf1000301 = "hf1000301"; // 登录跳转页   带跳转页面ID:我的hf11018,微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
+    String hf200009 = "hf200009"; // 登录-手机号码输入框-点击
+    String hf200010 = "hf200010"; // 登录-验证码输入框-点击
+    String hf200011 = "hf200011"; // 登录-获取验证码-点击
     String hf1000302 = "hf1000302"; // 登录-登录按钮-点击
     String hf1000303 = "hf1000303"; // 登录-登录按钮-登录成功
     String hf1000304 = "hf1000304"; // 登录-登录按钮-登录失败 ID:请勾选并同意协议hf11019,验证码错误hf11020,网络错误hf11021,其他原因hf11022
@@ -29,14 +33,15 @@ public interface EventId {
     String hf1000513 = "hf1000513"; // 图片清除-进入服务详情页
     String hf1000514 = "hf1000514"; // 图片清除-使用服务
     String hf1000515 = "hf1000515"; // 底部导航栏-点击 ID:首页hf11015,案例hf11016,我的hf11018
+    String hf200008 = "hf200008"; // 首页-首次点击的功能 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000601 = "hf1000601"; // 服务详情-价格分类-点击 ID:超级恢复hf11035,微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
-    String hf1000602 = "hf1000602"; // 服务详情-支付按钮-点击
+    String hf1000602 = "hf1000602"; // 服务详情-支付按钮-点击 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000603 = "hf1000603"; // 服务详情-支付按钮-选择支付方式 ID:支付宝支付hf11023,支付宝扫码支付hf11024
     String hf1000604 = "hf1000604"; // 服务详情-支付成功-带页面跳转ID ID:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
-    String hf1000605 = "hf1000605"; // 服务详情-支付成功-带价格服务类型ID ID:单功能一年hf11025,超级恢复一年hf11026,永久清除hf11027
+    String hf1000605 = "hf1000605"; // 服务详情-支付成功-带价格服务类型ID id:单功能一年hf11025,超级恢复一年hf11026,永久清除hf11027 type1:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000606 = "hf1000606"; // 服务详情-支付失败 ID:放弃支付hf11028,网络错误hf11021,其他原因hf11022
-    String hf1000607 = "hf1000607"; // 服务详情-挽留弹窗-关闭图标-点击
-    String hf1000608 = "hf1000608"; // 服务详情-挽留弹窗-立即恢复按钮-点击
+    String hf1000607 = "hf1000607"; // 服务详情-挽留弹窗-关闭图标-点击 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
+    String hf1000608 = "hf1000608"; // 服务详情-挽留弹窗-立即恢复按钮-点击 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000801 = "hf1000801"; // 案例-案例详情
     String hf1000901 = "hf1000901"; // 订单-点击
     String hf1001101 = "hf1001101"; // 我的-banner图-点击
@@ -56,8 +61,10 @@ public interface EventId {
 
     String hf1000516 = "hf1000516"; //微信消息恢复-进入服务详情页-停留时长
     String hf1000517 = "hf1000517"; //微信消息恢复-使用服务-停留时长
+    String hf200006 = "hf200006"; //微信消息恢复-点击复制教程
     String hf1000518 = "hf1000518"; //微信好友恢复-进入服务详情页-停留时长
     String hf1000519 = "hf1000519"; //微信好友恢复-使用服务-停留时长
+    String hf200007 = "hf200007"; //微信好友恢复-点击复制教程
     String hf1000520 = "hf1000520"; //图片恢复-进入服务详情页-停留时长
     String hf1000521 = "hf1000521"; //图片恢复-使用服务-停留时长
     String hf1000522 = "hf1000522"; //文件恢复-进入服务详情页-停留时长

+ 2 - 2
app/src/main/java/com/datarecovery/master/dialog/MemberRetentionDialog.java

@@ -9,6 +9,8 @@ import com.datarecovery.master.R;
 import com.datarecovery.master.data.consts.EventId;
 import com.datarecovery.master.databinding.DialogMemberRetentionBinding;
 import com.datarecovery.master.handler.EventHelper;
+import com.datarecovery.master.utils.Maps;
+import com.datarecovery.master.utils.ReportUtil;
 
 @BaseDialog.FullScreen
 public class MemberRetentionDialog extends BaseDialog<DialogMemberRetentionBinding> {
@@ -19,14 +21,12 @@ public class MemberRetentionDialog extends BaseDialog<DialogMemberRetentionBindi
         super(context, R.style.Theme_Common_Dialog);
         setCancelable(false);
         binding.setOnCloseClickListener(v -> {
-            EventHelper.report(EventId.hf1000607);
             if (actionHandler != null) {
                 actionHandler.onCloseClick();
             }
             dismiss();
         });
         binding.setOnContinueClickListener(v -> {
-            EventHelper.report(EventId.hf1000608);
             if (actionHandler != null) {
                 actionHandler.onContinueClick();
             }

+ 12 - 1
app/src/main/java/com/datarecovery/master/module/homepage/HomePageViewModel.java

@@ -4,7 +4,9 @@ import com.atmob.app.lib.base.BaseViewModel;
 import com.atmob.app.lib.livedata.SingleLiveEvent;
 import com.atmob.common.runtime.ActivityUtil;
 import com.datarecovery.master.R;
+import com.datarecovery.master.data.consts.EventId;
 import com.datarecovery.master.data.repositories.DeviceFuncRepository;
+import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.module.audiorecover.AudioRecoverActivity;
 import com.datarecovery.master.module.filerecover.FileRecoverActivity;
 import com.datarecovery.master.module.imgrecover.ImageRecoverActivity;
@@ -12,6 +14,8 @@ import com.datarecovery.master.module.member.MemberActivity;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.module.videorecover.VideoRecoverActivity;
 import com.datarecovery.master.module.wxrecover.WeChatRecoverActivity;
+import com.datarecovery.master.utils.Maps;
+import com.datarecovery.master.utils.ReportUtil;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -86,6 +90,7 @@ public class HomePageViewModel extends BaseViewModel {
     }
 
     public void isHaveAuths(@MemberType String type, NextStepCallback stepCallback) {
+        reportFirstClickFunction(type);
         if (deviceFuncRepository.isHaveAuth(type)) {
             if (stepCallback != null) stepCallback.onNextStep();
         } else {
@@ -93,6 +98,13 @@ public class HomePageViewModel extends BaseViewModel {
         }
     }
 
+    public void reportFirstClickFunction(@MemberType String type) {
+        if (ReportUtil.isRecordOneEvent(EventId.hf200008)) {
+            return;
+        }
+        EventHelper.report(EventId.hf200008, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
+    }
+
 
     public void clickItemFunction(FunctionBean bean) {
         if (bean == null) {
@@ -120,5 +132,4 @@ public class HomePageViewModel extends BaseViewModel {
     }
 
 
-
 }

+ 12 - 0
app/src/main/java/com/datarecovery/master/module/login/LoginActivity.java

@@ -12,7 +12,9 @@ import com.atmob.app.lib.base.BaseActivity;
 import com.atmob.common.runtime.ContextUtil;
 import com.datarecovery.master.R;
 import com.datarecovery.master.data.consts.Constants;
+import com.datarecovery.master.data.consts.EventId;
 import com.datarecovery.master.databinding.ActivityLoginBinding;
+import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.module.browser.BrowserActivity;
 import com.datarecovery.master.utils.SpannableUtil;
 
@@ -54,6 +56,16 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> {
         String privacyPolicyText = getString(R.string.login_agree_privacy_policy_text);
         SpannableUtil.getAgreementSpannableStringBuilder(binding.loginAgreeText, agreeText, new String[]{userTermsText, privacyPolicyText}, getResources().getColor(R.color.colorPrimary), false,
                 v -> BrowserActivity.start(getBaseContext(), Constants.PRIVACY_POLICY), v -> BrowserActivity.start(getBaseContext(), Constants.USER_AGREEMENT));
+        binding.etPhone.setOnFocusChangeListener((v, hasFocus) -> {
+            if (hasFocus) {
+                EventHelper.report(EventId.hf200009);
+            }
+        });
+        binding.etCode.setOnFocusChangeListener((v, hasFocus) -> {
+            if (hasFocus) {
+                EventHelper.report(EventId.hf200010);
+            }
+        });
     }
 
     private void initObserver() {

+ 1 - 0
app/src/main/java/com/datarecovery/master/module/login/LoginViewModel.java

@@ -96,6 +96,7 @@ public class LoginViewModel extends BaseViewModel {
 
 
     public void onGetCodeClick() {
+        EventHelper.report(EventId.hf200011);
         String phoneNumText = phoneNum.getValue();
         if (isPhone(phoneNumText)) {
             doRequestVerificationCode(phoneNumText);

+ 6 - 0
app/src/main/java/com/datarecovery/master/module/member/MemberActivity.java

@@ -14,12 +14,14 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.atmob.app.lib.base.BaseActivity;
 import com.atmob.common.ui.SizeUtil;
+import com.datarecovery.master.data.consts.EventId;
 import com.datarecovery.master.databinding.ActivityMemberBinding;
 import com.datarecovery.master.dialog.AlipayQrCodeDialog;
 import com.datarecovery.master.dialog.ChoosePaymentWayDialog;
 import com.datarecovery.master.dialog.CommonLoadingDialog;
 import com.datarecovery.master.dialog.MemberRetentionDialog;
 import com.datarecovery.master.dialog.WechatPayQrCodeDialog;
+import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.module.audiorecover.AudioRecoverActivity;
 import com.datarecovery.master.module.filerecover.FileRecoverActivity;
 import com.datarecovery.master.module.imgrecover.ImageRecoverActivity;
@@ -27,6 +29,8 @@ import com.datarecovery.master.module.videorecover.VideoRecoverActivity;
 import com.datarecovery.master.module.wxrecover.WeChatRecoverActivity;
 import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.GridLayoutItemDecoration;
+import com.datarecovery.master.utils.Maps;
+import com.datarecovery.master.utils.ReportUtil;
 import com.gyf.immersionbar.ImmersionBar;
 
 import java.util.Objects;
@@ -230,11 +234,13 @@ public class MemberActivity extends BaseActivity<ActivityMemberBinding> {
                     .setActionHandler(new MemberRetentionDialog.ActionHandler() {
                         @Override
                         public void onCloseClick() {
+                            EventHelper.report(EventId.hf1000607, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberViewModel.getMemberType())));
                             finish();
                         }
 
                         @Override
                         public void onContinueClick() {
+                            EventHelper.report(EventId.hf1000608, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberViewModel.getMemberType())));
                             memberViewModel.onRetainMemberSubscribeClick();
                         }
                     });

+ 10 - 4
app/src/main/java/com/datarecovery/master/module/member/MemberViewModel.java

@@ -36,6 +36,7 @@ import com.google.gson.Gson;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
@@ -312,7 +313,7 @@ public class MemberViewModel extends BaseViewModel {
 //            LoginActivity.start(ActivityUtil.getTopActivity());
 //            return;
 //        }
-        EventHelper.report(EventId.hf1000602);
+        EventHelper.report(EventId.hf1000602, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberType)));
         MemberGoodsBean currentSelected = selectBean.getValue();
         if (currentSelected == null) {
             return;
@@ -473,13 +474,18 @@ public class MemberViewModel extends BaseViewModel {
                     if (BoxingUtil.boxing(aBoolean)) {
                         EventHelper.report(EventId.hf1000604, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberType)));
                         if (memberBean != null) {
+                            Map<String, Object> map = new HashMap<>();
                             if (Objects.equals(memberBean.getAuths(), MemberType.APP_SUPER_RECOVER)) {
-                                EventHelper.report(EventId.hf1000605, Maps.asMap(EventId.EVENT_ID, "hf11026"));
+                                map.put(EventId.EVENT_ID, "hf11026");
+                                EventHelper.report(EventId.hf1000605, map);
                             } else if (Objects.equals(memberBean.getAuths(), MemberType.APP_IMAGE_CLEAN) && memberBean.isPopular()) {
-                                EventHelper.report(EventId.hf1000605, Maps.asMap(EventId.EVENT_ID, "hf11027"));
+                                map.put(EventId.EVENT_ID, "hf11027");
+                                EventHelper.report(EventId.hf1000605, map);
                             } else {
-                                EventHelper.report(EventId.hf1000605, Maps.asMap(EventId.EVENT_ID, "hf11025"));
+                                map.put(EventId.EVENT_ID, "hf11025");
                             }
+                            map.put(EventId.EVENT_TYPE1, ReportUtil.getReportId(memberType));
+                            EventHelper.report(EventId.hf1000605, map);
                         }
                         payRepository.refreshOrderPageList();
                         onSubscribeSuccessEvent.setValue(orderId);

+ 5 - 0
app/src/main/java/com/datarecovery/master/module/wxrecover/WeChatViewModel.java

@@ -92,6 +92,11 @@ public class WeChatViewModel extends BaseViewModel {
         }
         ClipboardUtil.copy(value.getTutorialUrl());
         ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
+        if (Objects.equals(type, MemberType.APP_WX_MESSAGE_RECOVER)) {
+            EventHelper.report(EventId.hf200006);
+        } else if (Objects.equals(type, MemberType.APP_WX_FRIEND_RECOVER)) {
+            EventHelper.timeEvent(EventId.hf200007);
+        }
     }
 
     public void onCopyOrderNoClick() {

+ 16 - 0
app/src/main/java/com/datarecovery/master/utils/ReportUtil.java

@@ -1,5 +1,6 @@
 package com.datarecovery.master.utils;
 
+import com.atmob.common.data.KVUtils;
 import com.datarecovery.master.module.member.MemberType;
 
 import java.util.Objects;
@@ -26,4 +27,19 @@ public class ReportUtil {
         }
         return null;
     }
+
+
+    /**
+     * 记录单次事件是否已经触发过
+     *
+     * @param eventId
+     * @return
+     */
+    public static boolean isRecordOneEvent(String eventId) {
+        boolean eventBoolean = KVUtils.getDefault().getBoolean(eventId, false);
+        if (!eventBoolean) {
+            KVUtils.getDefault().putBoolean(eventId, true);
+        }
+        return eventBoolean;
+    }
 }