Browse Source

[주모] 앱실드 오류 코드 적용

yeongyun 6 years ago
parent
commit
2fb4539758

+ 4 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/EmergencyBean.java

@@ -23,6 +23,10 @@ public class EmergencyBean extends JsonBeanBase implements IEmergency {
   public static final int CODE_INVALID_APP = -3333;
   public static final int CODE_FORCE_APP_UPDATE = -4444;
 
+  public static final int CODE_ROUTING = 70001;
+  public static final int CODE_FORGERY = 70002;
+  public static final int CODE_MODULATION = 70003;
+
   private int code;
 
   public EmergencyBean(int code) {

+ 48 - 16
app/src/main/java/kr/co/zumo/app/lifeplus/helper/AppShieldHelper.java

@@ -8,11 +8,16 @@ import android.util.Log;
 
 import com.softforum.xas.XecureAppShield;
 
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.Completable;
 import io.reactivex.Single;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
+import kr.co.zumo.app.lifeplus.bean.api.EmergencyBean;
 import kr.co.zumo.app.lifeplus.config.NetworkConfig;
+import kr.co.zumo.app.lifeplus.model.module.APIModuleHelper;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 
@@ -37,6 +42,7 @@ public class AppShieldHelper {
   }
 
   private Disposable disposable;
+  private EmergencyBean emergencyBean;
 
   /**
    * dispose
@@ -64,14 +70,22 @@ public class AppShieldHelper {
       .subscribe(result -> {
         Log.d("APP# AppShieldHelper | setup", "|" + "app shield result: " + result);
 //        Log.d("APP# AppShieldHelper | setup", "|" + "app shield result: " + XecureAppShield.getInstance().GetErrorMsg(result));
-        if (result != 0) {
-          // error
-          // fixme 에러 발송 필요
-          // fixme 에러 발송 필요
-          // fixme 에러 발송 필요
-//          dispatchInvalidAppEvent();
-          {}
-        }
+//        if (result != 0) {
+//          // error
+//          // fixme 에러 발송 필요
+//          // fixme 에러 발송 필요
+//          // fixme 에러 발송 필요
+////          dispatchInvalidAppEvent();
+//          {}
+//        }
+
+          if(AppUtil.isRelease()) {
+              if (result == EmergencyBean.CODE_ROUTING) {
+                  dispatchRoutingAppEvent();
+              } else if (result == EmergencyBean.CODE_FORGERY || result == EmergencyBean.CODE_MODULATION) {
+                  dispatchForgeryAppEvent();
+              }
+          }
       }, e -> {
         // error
         // fixme 에러 발송 필요
@@ -84,12 +98,30 @@ public class AppShieldHelper {
   // fixme 에러 발송 필요
   // fixme 에러 발송 필요
   // fixme 에러 발송 필요
-//  private void dispatchInvalidAppEvent() {
-//    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(new EmergencyBean(EmergencyBean.CODE_INVALID_APP));
-//    if (false == consumed) {
-//      Log.d("APP# AppShieldHelper | dispatchInvalidAppEvent", "|" + "------------ again.......");
-//      disposable = Completable.timer(500, TimeUnit.MILLISECONDS)
-//        .subscribe(this::dispatchInvalidAppEvent);
-//    }
-//  }
+  private void dispatchInvalidAppEvent() {
+    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(new EmergencyBean(EmergencyBean.CODE_INVALID_APP));
+//    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(emergencyBean);
+    if (false == consumed) {
+      Log.d("APP# AppShieldHelper | dispatchInvalidAppEvent", "|" + "------------ again.......");
+      disposable = Completable.timer(500, TimeUnit.MILLISECONDS).subscribe(this::dispatchInvalidAppEvent);
+    }
+  }
+
+  private void dispatchRoutingAppEvent() {
+    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(new EmergencyBean(EmergencyBean.CODE_ROUTING));
+//    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(emergencyBean);
+    if (false == consumed) {
+      Log.d("APP# AppShieldHelper | dispatchInvalidAppEvent", "|" + "------------ again.......");
+      disposable = Completable.timer(500, TimeUnit.MILLISECONDS).subscribe(this::dispatchRoutingAppEvent);
+    }
+  }
+
+  private void dispatchForgeryAppEvent() {
+    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(new EmergencyBean(EmergencyBean.CODE_FORGERY));
+//    boolean consumed = APIModuleHelper.dispatchEmergencyEvent(emergencyBean);
+    if (false == consumed) {
+      Log.d("APP# AppShieldHelper | dispatchInvalidAppEvent", "|" + "------------ again.......");
+      disposable = Completable.timer(500, TimeUnit.MILLISECONDS).subscribe(this::dispatchForgeryAppEvent);
+    }
+  }
 }

+ 9 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -524,10 +524,10 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
    ***********************************/
   private AlertDialog invalidAppDialog;
 
-  private void showPopupInvalidApp() {
+  private void showPopupInvalidApp(int stringRes) {
     if (null == invalidAppDialog) {
       Log.i("APP# Presenter | showPopupAppUpdate", "|" + " showPopupAppUpdate --------");
-      invalidAppDialog = DialogProvider.of(getFragmentManager()).showErrorDialog(ResourceUtil.getString(R.string.emergency_invalid_app), () -> {
+      invalidAppDialog = DialogProvider.of(getFragmentManager()).showErrorDialog(ResourceUtil.getString(stringRes), () -> {
         invalidAppDialog = null;
         // 앱 종료
         onCommand(new ExitCommand());
@@ -723,7 +723,13 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
   public boolean onApiEmergency(IEmergency emergency) {
     if (emergency.getEmergencyCode() == EmergencyBean.CODE_INVALID_APP) {
       // 미인증 앱
-      showPopupInvalidApp();
+      showPopupInvalidApp(R.string.emergency_invalid_app);
+      return true;
+    } else if(emergency.getEmergencyCode() == EmergencyBean.CODE_ROUTING) {
+      showPopupInvalidApp(R.string.error_app_shield_routing);
+      return true;
+    } else if(emergency.getEmergencyCode() == EmergencyBean.CODE_FORGERY) {
+      showPopupInvalidApp(R.string.error_app_shield);
       return true;
     }
 

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

@@ -572,6 +572,8 @@
   <string name="emergency_app_update">새로워진 ZUMO app 이용을 위해 업데이트 해주세요. 확인을 누르면 구글 플레이 스토어로 이동합니다.</string>
   <string name="emergency_app_update_select">ZUMO app을 최신 버전으로 업데이트하고 새로워진 기능을 경험해 보세요.</string>
   <string name="emergency_invalid_app">App Error</string>
+  <string name="error_app_shield">앱이 위변조 되었습니다.</string>
+  <string name="error_app_shield_routing">단말이 루팅 되었습니다.</string>
 
   <string name="end">종료</string>
   <string name="ing">진행중</string>