Browse Source

[공통][New] Google Analytics - 카테고리: 콘텐츠

hyodong.min 6 years ago
parent
commit
d3364ae4ab

+ 48 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/helper/FirebaseAnalyticsHelper.java

@@ -32,12 +32,18 @@ public class FirebaseAnalyticsHelper extends Helper {
     static final String CONTENTS_INDEX = "contents_index";
     static final String CONTENTS_NAME = "contents_name";
 
+    public static final String TYPE = "type";
+    public static final String TYPE_RECOMMEND = "추천";
+    public static final String TYPE_LIST = "목록";
+    public static final String TYPE_BANNER = "배너";
+
     protected Param() {
     }
   }
 
   public static class Event {
-    static final String SELECT_CONTENTS = "콘텐츠 선택";
+    static final String SELECT_CONTENTS = "콘텐츠_선택";
+    static final String SELECT_MENU = "메뉴_선택";
     static final String SCREEN_VIEW = "스크린";
     static final String BUTTON = "버튼";
 
@@ -162,6 +168,27 @@ public class FirebaseAnalyticsHelper extends Helper {
     log(Event.SELECT_CONTENTS, params);
   }
 
+  /**
+   * 컨텐츠 클릭 이벤트 로깅
+   *
+   * @param screenStringId
+   * @param type
+   * @param categoryIndex
+   * @param categoryLabel
+   * @param contentIndex
+   * @param contentLabel
+   */
+  public void logContents(@StringRes int screenStringId, String type, int categoryIndex, String categoryLabel, int contentIndex, String contentLabel) {
+    Bundle params = new Bundle();
+    params.putString(Param.SCREEN, context.getString(screenStringId));
+    params.putString(Param.TYPE, type);
+    params.putString(Param.CATEGORY_INDEX, String.valueOf(categoryIndex));
+    params.putString(Param.CATEGORY_NAME, context.getString(R.string.fa_main_category_string, categoryIndex, categoryLabel));
+    params.putString(Param.CONTENTS_INDEX, String.valueOf(contentIndex));
+    params.putString(Param.CONTENTS_NAME, context.getString(R.string.fa_main_contents_string, contentIndex, contentLabel));
+    log(Event.SELECT_CONTENTS, params);
+  }
+
   /**
    * 컨텐츠 클릭 이벤트 로깅
    *
@@ -174,4 +201,24 @@ public class FirebaseAnalyticsHelper extends Helper {
   public void logContents(@StringRes int screenStringId, int categoryIndex, String categoryLabel, int contentIndex, String contentLabel) {
     logContents(context.getString(screenStringId), categoryIndex, categoryLabel, contentIndex, contentLabel);
   }
+
+  /**
+   * 카테고리 탭 메뉴 선택
+   *
+   * @param screen
+   * @param categoryIndex
+   * @param categoryLabel
+   * @param contentIndex
+   * @param contentLabel
+   */
+  public void logCategoryTabMenu(String screen, int categoryIndex, String categoryLabel, int contentIndex, String contentLabel) {
+    Bundle params = new Bundle();
+    params.putString(Param.SCREEN, screen);
+    params.putString(Param.CATEGORY_INDEX, String.valueOf(categoryIndex));
+    params.putString(Param.CATEGORY_NAME, context.getString(R.string.fa_main_category_string, categoryIndex, categoryLabel));
+    params.putString(Param.CONTENTS_INDEX, String.valueOf(contentIndex));
+    params.putString(Param.CONTENTS_NAME, context.getString(R.string.fa_main_contents_string, contentIndex, contentLabel));
+    log(Event.SELECT_MENU, params);
+  }
+
 }

+ 19 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryMainModel.java

@@ -9,6 +9,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import io.reactivex.disposables.Disposable;
+import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
@@ -254,4 +255,22 @@ public abstract class CategoryMainModel extends Model {
   public FlagContentsBean getSelectedRecommendBean() {
     return recommendBeans.get(selectedRecommendedIndex);
   }
+
+  public int getCategoryNameByIndex(int index) {
+    switch (index) {
+      case 0:
+        return R.string.fa_category_title_1;
+      case 1:
+        return R.string.fa_category_title_2;
+      case 2:
+        return R.string.fa_category_title_3;
+      case 3:
+        return R.string.fa_category_title_4;
+      case 4:
+        return R.string.fa_category_title_5;
+      default:
+        return R.string.empty_string;
+    }
+
+  }
 }

+ 42 - 19
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryMainPresenter.java

@@ -12,6 +12,7 @@ import kr.co.zumo.app.lifeplus.bean.api.EventDetailBean;
 import kr.co.zumo.app.lifeplus.bean.api.FlagContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
+import kr.co.zumo.app.lifeplus.helper.FirebaseAnalyticsHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
@@ -146,13 +147,20 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
         onRequestOrder(event.getIndex());
         break;
       case Event.RECOMMEND:
+        flagContentsBean = model.getSelectedRecommendBean();
+
+        logContents(
+          FirebaseAnalyticsHelper.Param.TYPE_RECOMMEND,
+          event.getIndex(),
+          flagContentsBean.getTitleWithTrim()
+        );
+
         /**
          * todo api 수정되면 디테일 로딩 없이 시리즈/디테일 구분
          */
         model.setSelectedRecommendedIndex(event.getIndex());
 
 
-        flagContentsBean = model.getSelectedRecommendBean();
         if (getScreenId(flagContentsBean) == ScreenID.EVENT_DETAIL) {
           gotoEvent(flagContentsBean);
         }
@@ -164,26 +172,10 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
 
         break;
       case Event.CONTENTS:
-        flagContentsBean = model.getContents().get(event.getIndex());
-        if (getScreenId(flagContentsBean) == ScreenID.EVENT_DETAIL) {
-          gotoEvent(flagContentsBean);
-        }
-        else {
-          setContentsHelper(flagContentsBean);
-
-          go(ScreenID.CONTENTS);
-        }
+        linkContents(FirebaseAnalyticsHelper.Param.TYPE_LIST, event.getIndex());
         break;
       case Event.BANNER:
-        flagContentsBean = model.getBannerBeans().get(event.getIndex());
-        if (getScreenId(flagContentsBean) == ScreenID.EVENT_DETAIL) {
-          gotoEvent(flagContentsBean);
-        }
-        else {
-          setContentsHelper(flagContentsBean);
-
-          go(ScreenID.CONTENTS);
-        }
+        linkContents(FirebaseAnalyticsHelper.Param.TYPE_BANNER, event.getIndex());
         break;
       default:
         onCategoryEvent(event);
@@ -191,6 +183,30 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
     }
   }
 
+  private void linkContents(String type, int index) {
+    FlagContentsBean flagContentsBean = model.getContents().get(index);
+    if (getScreenId(flagContentsBean) == ScreenID.EVENT_DETAIL) {
+      gotoEvent(flagContentsBean);
+    }
+    else {
+      logContents(type, index, flagContentsBean.getTitleWithTrim());
+
+      setContentsHelper(flagContentsBean);
+
+      go(ScreenID.CONTENTS);
+    }
+  }
+
+  private void logContents(String type, int index, String title) {
+    firebaseAnalyticsHelper.logContents(
+      R.string.fa_screen_category,
+      type,
+      model.getCategoryIndex() + 1,
+      getAnalyticsScreenName(),
+      index + 1,
+      title);
+  }
+
   private void gotoEvent(FlagContentsBean flagContentsBean) {
     // 이벤트 상세 로딩 후 진행
     new EventDetailDelegate().loadEvent(flagContentsBean.getItemNo(), new EventDetailDelegate.IEventDetailDelegateListener() {
@@ -295,6 +311,13 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
 
   @Override
   public final void onNavigationClickCategoryTab(ActionBar navigationBar, int index) {
+    firebaseAnalyticsHelper.logCategoryTabMenu(
+      ResourceUtil.getString(R.string.fa_screen_category),
+      model.getCategoryIndex() + 1,
+      getAnalyticsScreenName(),
+      index + 1,
+      ResourceUtil.getString(model.getCategoryNameByIndex(index)));
+
     switch (index) {
       case 0:
         go(ScreenID.FIRST_CATEGORY);

+ 6 - 0
app/src/main/res/values/strings.xml

@@ -948,4 +948,10 @@
   <string name="fa_weather">날씨</string>
   <string name="fa_category_menu">%s - 메뉴</string>
   <string name="fa_category_filter">%s - 필터</string>
+
+  <string name="fa_category_title_1">@string/contents_category1_action_bar_title</string>
+  <string name="fa_category_title_2">@string/contents_category2_action_bar_title</string>
+  <string name="fa_category_title_3">@string/contents_category3_action_bar_title</string>
+  <string name="fa_category_title_4">@string/contents_category4_action_bar_title</string>
+  <string name="fa_category_title_5">@string/contents_category5_action_bar_title</string>
 </resources>