Explorar el Código

app内部服统计完善

zhanghai hace 8 años
padre
commit
6df3f9398c

+ 3 - 0
app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java

@@ -60,6 +60,9 @@ public class TabsHelper {
      */
     private void nativeBack() {
         if (System.currentTimeMillis() - mLastBackTime < 1000) {
+            //退出统计
+            UMConfigUtils.onProfileSignOff();
+
             KFZSApp.getInstance().quit();
         } else {
             ToastBuilder.make(activity.getApplicationContext(), R.string.toast_double_click_exit_app, ToastBuilder.DEFAULT_TOAST_SINGLE);

+ 69 - 0
app/src/main/java/com/sheep/gamegroup/statistics/AppStatistics.java

@@ -0,0 +1,69 @@
+package com.sheep.gamegroup.statistics;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.NetUtil;
+import com.sheep.gamegroup.util.PreferenceUtils;
+import com.sheep.gamegroup.util.UMConfigUtils;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+/**
+ * Created by zhanghai on 2018/4/3.
+ */
+
+public class AppStatistics {
+    private static AppStatistics instance = null;
+
+
+    private AppStatistics(){}
+
+    public static AppStatistics getInstance(){
+        if(instance == null){
+            synchronized (AppStatistics.class){
+                if(instance == null){
+                    instance = new AppStatistics();
+                }
+            }
+        }
+        return instance;
+    }
+
+
+    /**
+     * 向服务器发送统计的数据
+     *
+     * @param type    大类型 参考 AppStatisticsConfig
+     *
+     * @param subType
+     *
+     * @param subString
+     */
+    public void sendDataToServer(int type,int subType,String subString){
+        String openid = PreferenceUtils.getPrefString(SheepApp.mContext, UMConfigUtils.LOGIN_OPENID,"");
+        ApiService apiService =SheepApp.getInstance().getNetComponent().getApiService();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("uid",openid);
+        jsonObject.put("type",type);
+        jsonObject.put("subtype",subType);
+        jsonObject.put("substring",subString);
+
+        apiService.appEventTracking(jsonObject).subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        System.out.println("sendDataToServer onError");
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        System.out.println("sendDataToServer onNext");
+                    }
+                });
+    }
+}

+ 87 - 0
app/src/main/java/com/sheep/gamegroup/statistics/AppStatisticsConfig.java

@@ -0,0 +1,87 @@
+package com.sheep.gamegroup.statistics;
+
+/**
+ * Created by zhanghai on 2018/4/3.
+ */
+
+public class AppStatisticsConfig {
+
+    public static class PType{
+        //dau 当日有登录过的账号数量使用
+        public static final int DAU = 1000;
+        //任务完成时间
+        public static final int TASK_FINISH = 2000;
+        //页面开始进入
+        public static final int PAGE_START = 3000;
+        //离开页面
+        public static final int PAGE_END = 4000;
+        //统计点击次数事件
+        public static final int ONCLICK_EVENT = 5000;
+    }
+
+    /**
+     * 用于DAU统计用户相关
+     */
+    public static class Dau{
+        //登录
+        public static final int signIn = 1000;
+        //登出
+        public static final int signOff = 1001;
+    }
+
+    /**
+     * 统计点击次数需要的子subtype
+     */
+    public static class SubType{
+        //游戏下载次数
+        public static final int game_download = 1000;
+        //广告点击次数
+        public static final int banner_click_horizontal = 1001;
+        //游戏页签
+        public static final int tab_game = 1002;
+        //分类页签
+        public static final int tab_category = 1003;
+        //小绵羊页签
+        public static final int tab_sheep = 1004;
+        //借着玩页签
+        public static final int tab_jiezhewan = 1005;
+        //信用卡页签
+        public static final int tab_creditcard = 1006;
+        //试玩赚钱
+        public static final int sheep_task_try = 1007;
+        //邀请赚钱
+        public static final int sheep_task_invite = 1008;
+        //躺着赚钱
+        public static final int sheep_task_lie = 1009;
+        //提现
+        public static final int sheep_tixian = 1010;
+        //任务详情
+        public static final int task_detail = 1011;
+        //任务详情中->下载游戏
+        public static final int task_download = 1012;
+        //任务详情中->上传截图
+        public static final int task_upload_picture = 1013;
+        //个人中心 -> 账号安全
+        public static final int user_account_safe = 1014;
+        //个人中心 -> 任务记录
+        public static final int user_task_record = 1015;
+        //个人中心 -> 提现明细
+        public static final int user_tixian_detail = 1016;
+        //账号安全 -> 绑定手机号(确定按钮)
+        public static final int user_bind_phone = 1017;
+        //账号安全 -> 绑定微信号(立即绑定按钮)
+        public static final int user_bind_weixin = 1018;
+        //账号安全 -> 实名认证(提交按钮)
+        public static final int user_authentication = 1019;
+        //账号安全 -> 退出登录按钮
+        public static final int user_logout = 1020;
+        //搜索界面-> 搜索按钮
+        public static final int game_search = 1021;
+        //主界面右上角 -> 下载管理按钮
+        public static final int game_download_manager = 1022;
+        //接取任务
+        public static final int task_accept = 1023;
+    }
+
+
+}

+ 62 - 6
app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java

@@ -1,6 +1,8 @@
 package com.sheep.gamegroup.util;
 
 
+import android.content.Context;
+
 import com.kfzs.duanduan.react.SharedPreferences;
 import com.kfzs.duanduan.utils.ShareUtils;
 import com.sheep.gamegroup.statistics.AppStatistics;
@@ -57,6 +59,7 @@ public class UMConfigUtils {
 
     /**
      * 用户信息统计
+     * 登录
      */
     public static void onProfileSignIn(){
         String source = PreferenceUtils.getPrefString(SheepApp.mContext,LOGIN_TYPE,Source.SHEEP);
@@ -65,7 +68,7 @@ public class UMConfigUtils {
         MobclickAgent.onProfileSignIn(source,openid);
 
         //自己的统计信息
-
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.DAU,AppStatisticsConfig.Dau.signIn,"");
     }
 
     /**
@@ -75,7 +78,7 @@ public class UMConfigUtils {
         MobclickAgent.onProfileSignOff();
 
         //自己的统计退出
-
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.DAU,AppStatisticsConfig.Dau.signOff,"");
     }
 
 
@@ -85,6 +88,7 @@ public class UMConfigUtils {
      */
     public static void onEvent(String event){
         MobclickAgent.onEvent(SheepApp.mContext,event);
+        //本服数据统计
         int subType = 0;
         if(event.equals(Event.GAME_DOWNLOAD)){
             subType = AppStatisticsConfig.SubType.game_download;
@@ -134,8 +138,62 @@ public class UMConfigUtils {
             subType = AppStatisticsConfig.SubType.game_download_manager;
         }else if(event.equals(Event.GAME_DOWNLOAD)){
             subType = AppStatisticsConfig.SubType.game_download;
+        }else if(event.equals(Event.TASK_ACCEPT)){
+            subType = AppStatisticsConfig.SubType.task_accept;
         }
 
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.ONCLICK_EVENT,subType,"");
+
+    }
+
+
+    /**
+     * 页面开始
+     * @param context
+     */
+    public static void onPageStart(Context context){
+        MobclickAgent.onResume(context);
+
+        String tag = context.getClass().getCanonicalName();
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.PAGE_START,0,tag);
+    }
+
+    /**
+     * 页面开始
+     * @param tag
+     */
+    public static void onPageStart(String tag){
+        MobclickAgent.onPageStart(tag);
+
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.PAGE_START,0,tag);
+    }
+
+    /**
+     * 页面结束
+     * @param context
+     */
+    public static void onPageEnd(Context context){
+        MobclickAgent.onPause(context);
+
+        String tag = context.getClass().getCanonicalName();
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.PAGE_END,0,tag);
+    }
+
+    /**
+     * 页面结束
+     * @param tag
+     */
+    public static void onPageEnd(String tag){
+        MobclickAgent.onPageEnd(tag);
+
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.PAGE_END,0,tag);
+    }
+
+    /**
+     * 任务完成时间统计
+     */
+    public static void finishTask(){
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.PType.TASK_FINISH,0,"");
     }
 
 
@@ -149,13 +207,11 @@ public class UMConfigUtils {
         if(isVisibleToUser){
             if(tag != null){
                 //umeng fragment
-                MobclickAgent.onPageStart(tag);
-
+                UMConfigUtils.onPageStart(tag);
             }
         }else{
             if(tag != null){
-                MobclickAgent.onPageEnd(tag);
-
+                UMConfigUtils.onPageEnd(tag);
             }
         }
     }

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -298,6 +298,7 @@ public class TaskDetailAct extends BaseActivity implements TaskDetailContract.Vi
 //                            onGetNetImageUrl(data);
         dialogShowLoading.getAlertDialog().dismiss();
 
+        UMConfigUtils.finishTask();
     }
 
     @Override

+ 3 - 2
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -14,6 +14,7 @@ import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.tencent.bugly.Bugly;
@@ -139,12 +140,12 @@ public class SheepApp extends BaseApplication {
 
         @Override
         public void onActivityResumed(Activity activity) {
-            MobclickAgent.onResume(activity);
+            UMConfigUtils.onPageStart(activity);
         }
 
         @Override
         public void onActivityPaused(Activity activity) {
-            MobclickAgent.onPause(activity);
+            UMConfigUtils.onPageEnd(activity);
         }
 
         @Override