浏览代码

Merge branch 'develop' of https://github.com/swict/LifeplusAndroid into develop

Hasemi 6 年之前
父节点
当前提交
27bc63882b

文件差异内容过多而无法显示
+ 275 - 0
app/src/dev/java/kr/co/zumo/app/lifeplus/view/screen/main/MainFragment.java


app/src/main/res/layout/main_test_layout.xml → app/src/dev/res/layout/main_test_layout.xml


+ 2 - 2
app/src/dev/res/values/app.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="app_name" translatable="false">Lifeplus - dev(release)</string>
-  <string name="app_name_debug" translatable="false">Lifeplus - dev(debug)</string>
+  <string name="app_name" translatable="false">ZUMO - dev(release)</string>
+  <string name="app_name_debug" translatable="false">ZUMO - dev(debug)</string>
 </resources>

+ 15 - 15
app/src/main/AndroidManifest.xml

@@ -35,21 +35,6 @@
 
         <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.VIEW"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-
-        <!-- firebase dynamic links -->
-        <data
-          android:host="www.zumo.co.kr"
-          android:scheme="http"/>
-        <data
-          android:host="www.zumo.co.kr"
-          android:scheme="https"/>
-
-      </intent-filter>
     </activity>
 
     <!-- Activity -->
@@ -68,6 +53,21 @@
           android:scheme="@string/kakao_scheme"/>
 
       </intent-filter>
+      <intent-filter>
+        <action android:name="android.intent.action.VIEW"/>
+
+        <category android:name="android.intent.category.DEFAULT"/>
+        <category android:name="android.intent.category.BROWSABLE"/>
+
+        <!-- firebase dynamic links -->
+        <data
+          android:host="www.zumo.co.kr"
+          android:scheme="http"/>
+        <data
+          android:host="www.zumo.co.kr"
+          android:scheme="https"/>
+
+      </intent-filter>
     </activity>
     <activity
       android:name=".lifeplus.activity.MainActivity"

+ 3 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/AppInitializer.java

@@ -4,6 +4,7 @@
 package kr.co.zumo.app.lifeplus.activity;
 
 import android.content.Context;
+import android.util.Log;
 
 import kr.co.zumo.app.lifeplus.helper.FirebaseHelper;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
@@ -78,5 +79,7 @@ public class AppInitializer {
     ActivityDeliveryHelper.getInstance().dispose();
     ActivityDeliveryResultHelper.getInstance().dispose();
     ActivityScreenIDDeliveryHelper.getInstance().dispose();
+
+    Log.d("APP# AppInitializer | disposeHelpers", "|" + " ******************************************************************** disposed *");
   }
 }

+ 44 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ContentsGateActivity.java

@@ -4,6 +4,8 @@ import android.content.Intent;
 import android.net.Uri;
 import android.util.Log;
 
+import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
+
 import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.view.IWaiterCallable;
 import kr.co.zumo.app.lifeplus.view.animation.LoadingDriver;
@@ -26,16 +28,54 @@ public class ContentsGateActivity extends ActivityBaseSetup {
   @Override
   protected void setup() {
 
-    Uri uri = getIntent().getData();
+    // 카카오 링크, 위젯 데이터와 다이나믹 링크를 구분
+
+    FirebaseDynamicLinks.getInstance()
+      .getDynamicLink(getIntent())
+      .addOnSuccessListener(this, pendingDynamicLinkData -> {
+        Log.d("APP# ContentsGateActivity | setup", "|" + "========== pendingDynamicLinkData .............. ");
+
+        // Get deep link from result (may be null if no link is found)
+        Uri uri;
+        if (pendingDynamicLinkData != null) {
+          /**
+           * 다이나믹 링크
+           */
+          uri = pendingDynamicLinkData.getLink();
+          Log.i("APP# ContentsGateActivity | setup", "| dynamic -> " + uri.toString());
+          parse(uri, () -> next());
+        }
+        else {
+          /**
+           * 카카오/위젯
+           */
+          uri = getIntent().getData();
+          Log.i("APP# ContentsGateActivity | setup", "| uri -> " + uri.toString());
+          parse(uri, () -> next());
+
+          getIntent().setData(null);
+        }
+      })
+      .addOnFailureListener(this, e -> {
+        Log.e("APP#  ContentsGateActivity | onFailure", "|" + "e -> " + e);
+        next();
+      });
+
+  }
+
+  private void parse(Uri uri, Runnable nextRunnable) {
     if (null != uri) {
       Log.i("APP# ContentsGateActivity | onCreate", "|" + uri.toString());
 
-      /**
+      /*
        * 데이터만 준비한다.
        *
        * 모든 예외 사항들( 잠금 화면 등)을 넘어서 메인 컨텐츠 를 표시 할 수 있을 때 데이터를 이용해서 컨텐츠를 표시한다.
        */
 
+      // 카카오 링크, 위젯 데이터와 다이나믹 링크를 구분
+
+
       LoadingDriver loadingDriver = new LoadingDriver();
       deepLinkParser = new DeepLinkParser();
       deepLinkParser.parse(getApplicationContext(), uri, new IWaiterCallable() {
@@ -49,15 +89,13 @@ public class ContentsGateActivity extends ActivityBaseSetup {
           loadingDriver.remove();
         }
       }, () -> {
-        next();
+        nextRunnable.run();
       });
     }
     else {
+      // 데이터 없음.
       finish();
     }
-
-    getIntent().setData(null);
-
   }
 
   private void next() {

+ 13 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/activity/DeepLinkParser.java

@@ -44,7 +44,7 @@ public class DeepLinkParser {
   }
 
   private void next(Runnable nextRunnable) {
-    if(isDisposed) {
+    if (isDisposed) {
       return;
     }
     nextRunnable.run();
@@ -67,6 +67,7 @@ public class DeepLinkParser {
     Log.i("APP# DeepLinkParser | parse", "|" + " contentsType: " + contentsType + " itemNo: " + itemNo + ", page: " + page);
 
     if (StringUtil.isFull(itemNo)) {
+      // 콘텐츠/이벤트
 
       if (Share.LINK_TYPE_EVENT_DETAIL.equals(contentsType)) {
         // event
@@ -111,5 +112,16 @@ public class DeepLinkParser {
         next(nextRunnable);
       }
     }
+    else {
+      // 추천인 코드 확인
+      final String recommendKey = null != uri ? uri.getQueryParameter(Share.RECOMMEND_KEY) : "";
+      if (StringUtil.isFull(recommendKey)) {
+        // 추천인 코드 있음 -> 그냥 실행...
+        next(nextRunnable);
+      }
+      else {
+        next(nextRunnable);
+      }
+    }
   }
 }

+ 2 - 54
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SplashActivity.java

@@ -2,14 +2,11 @@ package kr.co.zumo.app.lifeplus.activity;
 
 import android.content.Context;
 import android.content.Intent;
-import android.net.Uri;
 import android.support.annotation.NonNull;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.FragmentActivity;
 import android.util.Log;
 
-import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
-
 import java.util.Arrays;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -22,8 +19,6 @@ import kr.co.zumo.app.lifeplus.helper.FirebaseHelper;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.SuperModelInit;
 import kr.co.zumo.app.lifeplus.network.NetworkWatcher;
-import kr.co.zumo.app.lifeplus.view.IWaiterCallable;
-import kr.co.zumo.app.lifeplus.view.animation.LoadingDriver;
 
 /**
  * Splash 화면
@@ -39,7 +34,6 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
 
   CompositeDisposable disposable = new CompositeDisposable();
   ScreenStarter starter;
-  DeepLinkParser deepLinkParser;
 
   ISplashContract.Presenter presenter;
 
@@ -60,48 +54,6 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
     presenter.onResume();
   }
 
-  private void controlDynamicLink() {
-    Log.d("APP# SplashActivity | controlDynamicLink", "|" + "..");
-    /**
-     * 다이나믹 링크가 지정한 액티비티로 연계되지 않고 항상 런쳐 액티비티로 전달된다.
-     * 어쩔 수 없이 런쳐에 해당 코드를 삽입
-     * -> 수정 가능하다면 ContentsGateActivity 로 통일하는 것이 좋음
-     */
-    FirebaseDynamicLinks.getInstance()
-      .getDynamicLink(getIntent())
-      .addOnSuccessListener(this, pendingDynamicLinkData -> {
-        Log.d("APP# SplashActivity | setup", "|" + "========== pendingDynamicLinkData ..............");
-
-        // Get deep link from result (may be null if no link is found)
-        Uri uri = null;
-        if (pendingDynamicLinkData != null) {
-          uri = pendingDynamicLinkData.getLink();
-
-          LoadingDriver loadingDriver = new LoadingDriver();
-          deepLinkParser = new DeepLinkParser();
-          deepLinkParser.parse(getApplicationContext(), uri, new IWaiterCallable() {
-            @Override
-            public void showWaiter() {
-              loadingDriver.create(SplashActivity.this, 100);
-            }
-
-            @Override
-            public void hideWaiter() {
-              loadingDriver.remove();
-            }
-          }, () -> {
-            next();
-          });
-        }
-        else {
-          next();
-        }
-      })
-      .addOnFailureListener(this, e -> {
-        Log.e("APP#  SplashActivity | onFailure", "|" + "e -> " + e);
-        next();
-      });
-  }
 
   private void next() {
     setupInternal();
@@ -175,10 +127,6 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
 
   @Override
   protected void onBeforeDestroy() {
-    if (null != deepLinkParser) {
-      deepLinkParser.dispose();
-      deepLinkParser = null;
-    }
   }
 
   @Override
@@ -214,8 +162,8 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
 
   @Override
   public void onPermissionCompleted() {
-    // 권한 처리 종료
-    controlDynamicLink();
+    // 권한 처리 종료 -> 앱 시작
+    next();
   }
 
   @Override

+ 1 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/tool/Share.java

@@ -43,6 +43,7 @@ public abstract class Share<T> {
   public static final String LINK_TYPE = "itemType";
   public static final String LINK_TYPE_EVENT_DETAIL = "EV0000";
   public static final String LINK_TYPE_CONTENTS = "CO5000";
+  public static final String LINK_TYPE_RECOMMEND = "ST0000";
 
   @Retention(RetentionPolicy.SOURCE)
   @StringDef({TYPE_KAKAO, TYPE_FACEBOOK, TYPE_EMAIL, TYPE_URL})

+ 27 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/tool/ShareKakaoTalk.java

@@ -4,6 +4,7 @@
 package kr.co.zumo.app.lifeplus.tool;
 
 import android.content.Context;
+import android.net.Uri;
 import android.util.Log;
 
 import com.kakao.kakaolink.v2.KakaoLinkResponse;
@@ -82,16 +83,35 @@ public class ShareKakaoTalk extends Share<Context> {
   }
 
   private String getEventExecutionParams(EventDetailBean eventDetailBean) {
-    return new StringBuilder(CONTENTS_ITEM_NO).append("=").append(eventDetailBean.getItemNo())
-      .append("&").append(LINK_TYPE).append("=").append(LINK_TYPE_EVENT_DETAIL)
+    return new Uri.Builder().appendQueryParameter(CONTENTS_ITEM_NO, eventDetailBean.getItemNo())
+      .appendQueryParameter(LINK_TYPE, LINK_TYPE_EVENT_DETAIL)
       .toString();
+
+//    return new StringBuilder(CONTENTS_ITEM_NO).append("=").append(eventDetailBean.getItemNo())
+//      .append("&").append(LINK_TYPE).append("=").append(LINK_TYPE_EVENT_DETAIL)
+//      .toString();
   }
 
   private String getExecutionParams(ContentsItemBean contentsBean, int pageIndex) {
-    return new StringBuilder(CONTENTS_ITEM_NO).append("=").append(contentsBean.getItemNo())
-      .append("&").append(CONTENTS_ITEM_PAGE).append("=").append(pageIndex)
-      .append("&").append(LINK_TYPE).append("=").append(LINK_TYPE_CONTENTS)
+    return new Uri.Builder().appendQueryParameter(CONTENTS_ITEM_NO, contentsBean.getItemNo())
+      .appendQueryParameter(CONTENTS_ITEM_PAGE, String.valueOf(pageIndex))
+      .appendQueryParameter(LINK_TYPE, LINK_TYPE_CONTENTS)
+      .toString();
+
+//    return new StringBuilder(CONTENTS_ITEM_NO).append("=").append(contentsBean.getItemNo())
+//      .append("&").append(CONTENTS_ITEM_PAGE).append("=").append(pageIndex)
+//      .append("&").append(LINK_TYPE).append("=").append(LINK_TYPE_CONTENTS)
+//      .toString();
+  }
+
+  private String getRecommendExecutionParams(String code) {
+    return new Uri.Builder().appendQueryParameter(RECOMMEND_KEY, code)
+      .appendQueryParameter(LINK_TYPE, LINK_TYPE_RECOMMEND)
       .toString();
+
+//    return new StringBuilder(RECOMMEND_KEY).append("=").append(code)
+//      .append("&").append(LINK_TYPE).append("=").append(LINK_TYPE_RECOMMEND)
+//      .toString();
   }
 
   @Override
@@ -159,8 +179,8 @@ public class ShareKakaoTalk extends Share<Context> {
       .addButton(new ButtonObject(ResourceUtil.getString(R.string.open_app), LinkObject.newBuilder()
         .setWebUrl(url)
         .setMobileWebUrl(url)
-        .setAndroidExecutionParams(new StringBuilder(RECOMMEND_KEY).append("=").append(code).toString())
-        .setIosExecutionParams(new StringBuilder(RECOMMEND_KEY).append("=").append(code).toString())
+        .setAndroidExecutionParams(getRecommendExecutionParams(code))
+        .setIosExecutionParams(getRecommendExecutionParams(code))
         .build()))
       .build();
 

文件差异内容过多而无法显示
+ 2 - 242
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainFragment.java


+ 24 - 0
app/src/product/java/kr/co/zumo/app/lifeplus/view/screen/main/MainFragment.java

@@ -0,0 +1,24 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.view.screen.main;
+
+/**
+ * MainFragment
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 10. 15.]   [최초 작성]
+ * @since 2018. 10. 15.
+ */
+public class MainFragment extends MainDebugFragment implements IMainView {
+
+  /***********************************
+   * debug
+   ***********************************/
+
+  @Deprecated
+  protected void debug() { }
+}

+ 11 - 0
app/src/product/res/layout/main_test_layout.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<merge
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  android:id="@+id/layout_test_all"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:gravity="bottom"
+  android:orientation="vertical">
+<!-- 릴리즈 버젼에 테스트 패널 없음 -->
+</merge>

+ 2 - 2
app/src/product/res/values/app.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="app_name" translatable="false">Lifeplus</string>
-  <string name="app_name_debug" translatable="false">Lifeplus (debug)</string>
+  <string name="app_name" translatable="false">ZUMO</string>
+  <string name="app_name_debug" translatable="false">ZUMO (debug)</string>
 </resources>

+ 2 - 2
app/src/sandbox/res/values/app.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="app_name" translatable="false">Lifeplus - sandbox(release)</string>
-  <string name="app_name_debug" translatable="false">Lifeplus - sandbox(debug)</string>
+  <string name="app_name" translatable="false">ZUMO - sandbox(release)</string>
+  <string name="app_name_debug" translatable="false">ZUMO - sandbox(debug)</string>
 </resources>