浏览代码

[EXC]
- 서버 점검 메시지 예외처리

yeongyun 6 年之前
父节点
当前提交
2032abae78
共有 1 个文件被更改,包括 138 次插入126 次删除
  1. 138 126
      app/src/main/java/kr/co/zumo/app/lifeplus/helper/AppVersionHelper.java

+ 138 - 126
app/src/main/java/kr/co/zumo/app/lifeplus/helper/AppVersionHelper.java

@@ -8,7 +8,6 @@ import android.support.annotation.IntDef;
 import android.util.Log;
 
 import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
-import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -31,140 +30,153 @@ import kr.co.zumo.app.lifeplus.util.StringUtil;
  * @since 2019-03-28
  */
 public class AppVersionHelper {
-  private static AppVersionHelper ourInstance = new AppVersionHelper();
+    private static AppVersionHelper ourInstance = new AppVersionHelper();
 
-  public static AppVersionHelper getInstance() {
-    return ourInstance;
-  }
+    public static AppVersionHelper getInstance() {
+        return ourInstance;
+    }
 
-  private AppVersionHelper() {
-  }
+    private AppVersionHelper() {
+    }
 
-  private Disposable disposable;
-  private FirebaseRemoteConfig firebaseRemoteConfig;
+    private Disposable disposable;
+    private FirebaseRemoteConfig firebaseRemoteConfig;
+
+    private static final String VERSION_LATEST = "newerVersion";
+    private static final String VERSION_FORCE = "forceVersion";
+    private static final String SERVER_STATUS = "serverStatus";
+
+    /**
+     * dispose
+     */
+    public void dispose() {
+        if (null != disposable) {
+            disposable.dispose();
+            disposable = null;
+        }
+    }
 
-  private static final String VERSION_LATEST = "newerVersion";
-  private static final String VERSION_FORCE = "forceVersion";
-  private static final String SERVER_STATUS = "serverStatus";
+    /**
+     * 리모트 컨피그 가져옴
+     *
+     * @param activity
+     * @param listener
+     */
+    public void fetch(Activity activity, IAppVersionListener listener) {
+        setConfig();
+        if (activity != null) {
+            firebaseRemoteConfig.fetch(0)
+                    .addOnCompleteListener(activity, task -> {
+                        if (task.isSuccessful()) {
+                            // After config data is successfully fetched, it must be activated before newly fetched
+                            // values are returned.
+                            firebaseRemoteConfig.activateFetched();
+
+                            String currentVersion = getVersion("");
+
+                            Log.d("APP# AppVersionHelper | fetch, 67", "|" + "current: " + StringUtil.getPureVersionString(AppUtil.getVersionName(), 3) + " new: " + getLatestVersion() + " force: " + getForceVersion());
+
+                            String serverStatus = getServerStatus();
+                            if (StringUtil.isFull(serverStatus)) {
+                                listener.onServerMessage(serverStatus);
+                            } else {
+                                // 업데이트 검사
+                                if (StringUtil.hasNewVersion(currentVersion, getForceVersion())) {
+                                    // 강제 업데이트
+                                    listener.onAppUpdatable(IAppVersionListener.FLAG_FORCE);
+                                } else if (StringUtil.hasNewVersion(currentVersion, getLatestVersion())) {
+                                    // 선택 업데이트
+                                    listener.onAppUpdatable(IAppVersionListener.FLAG_LATEST);
+                                } else {
+                                    listener.onAppUpdatable(IAppVersionListener.FLAG_UNABLE);
+                                }
+                            }
+                        } else {
+                            // fail, ignored
+                            listener.onAppUpdatable(IAppVersionListener.FLAG_UNABLE);
+                        }
+                    });
+        }
+    }
 
-  /**
-   * dispose
-   */
-  public void dispose() {
-    if (null != disposable) {
-      disposable.dispose();
-      disposable = null;
+    private void setConfig() {
+        if (null == firebaseRemoteConfig) {
+            firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
+        }
     }
-  }
-
-  /**
-   * 리모트 컨피그 가져옴
-   *
-   * @param activity
-   * @param listener
-   */
-  public void fetch(Activity activity, IAppVersionListener listener) {
-    setConfig();
-    if(activity != null) {
-      firebaseRemoteConfig.fetch(0)
-              .addOnCompleteListener(activity, task -> {
-                if (task.isSuccessful()) {
-                  // After config data is successfully fetched, it must be activated before newly fetched
-                  // values are returned.
-                  firebaseRemoteConfig.activateFetched();
-
-                  String currentVersion = getVersion("");
-
-                  Log.d("APP# AppVersionHelper | fetch, 67", "|" + "current: " + StringUtil.getPureVersionString(AppUtil.getVersionName(), 3) + " new: " + getLatestVersion() + " force: " + getForceVersion());
-
-                  String serverStatus = getServerStatus();
-                  if (StringUtil.isFull(serverStatus)) {
-                    listener.onServerMessage(serverStatus);
-                  } else {
-                    // 업데이트 검사
-                    if (StringUtil.hasNewVersion(currentVersion, getForceVersion())) {
-                      // 강제 업데이트
-                      listener.onAppUpdatable(IAppVersionListener.FLAG_FORCE);
-                    } else if (StringUtil.hasNewVersion(currentVersion, getLatestVersion())) {
-                      // 선택 업데이트
-                      listener.onAppUpdatable(IAppVersionListener.FLAG_LATEST);
-                    } else {
-                      listener.onAppUpdatable(IAppVersionListener.FLAG_UNABLE);
-                    }
-                  }
-                } else {
-                  // fail, ignored
-                  listener.onAppUpdatable(IAppVersionListener.FLAG_UNABLE);
+
+    /**
+     * 최신 버젼
+     *
+     * @return
+     */
+    public String getLatestVersion() {
+        setConfig();
+        String version = firebaseRemoteConfig.getString(VERSION_LATEST);
+        return getVersion(version);
+    }
+
+    /**
+     * 서버 상태 확인
+     * status의 값이 1일때, 메시지 출력 후 앱 종료
+     * {
+     *   "status": 0,
+     *   "message": "[정기점검안내]\n -일시: 1/11(금) 01시~02시\n -작업범위: ZUMO 내 모든 서비스\n -해당시간동안 서비스 접속이 원활하지 않을 수 있습니다. 양해 부탁드립니다."
+     * }
+     *
+     * @return 서버 점검 메시지
+     */
+    public String getServerStatus() {
+        setConfig();
+        String serverStatus = firebaseRemoteConfig.getString(SERVER_STATUS);
+        if (serverStatus != null) {
+            JSONObject jsonObject;
+            try {
+                jsonObject = new JSONObject(serverStatus);
+                int status = jsonObject.getInt("status");
+                String message = jsonObject.getString("message");
+                if (status == 1) {
+                    return message;
                 }
-              });
+            } catch (JSONException e) {
+                return "";
+            }
+        }
+        return "";
     }
-  }
 
-  private void setConfig() {
-    if (null == firebaseRemoteConfig) {
-      firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
+    /**
+     * 강제 업데이트 버젼
+     *
+     * @return
+     */
+    private String getForceVersion() {
+        setConfig();
+        String version = firebaseRemoteConfig.getString(VERSION_FORCE);
+        return getVersion(version);
     }
-  }
-
-  /**
-   * 최신 버젼
-   *
-   * @return
-   */
-  public String getLatestVersion() {
-    setConfig();
-    String version = firebaseRemoteConfig.getString(VERSION_LATEST);
-    return getVersion(version);
-  }
-
-  public String getServerStatus() {
-    setConfig();
-    String serverStatus = firebaseRemoteConfig.getString(SERVER_STATUS);
-    JSONObject jsonObject;
-    try {
-      jsonObject = new JSONObject(serverStatus);
-      int status = jsonObject.getInt("status");
-      String message = jsonObject.getString("message");
-      if(status == 1) {
-        return message;
-      }
-    } catch (JSONException e) {
-      return "";
+
+    private String getVersion(String version) {
+        return StringUtil.isFull(version) ? version : StringUtil.getPureVersionString(AppUtil.getVersionName(), 3);
+    }
+
+    /***********************************
+     * interface
+     ***********************************/
+    public interface IAppVersionListener {
+        int FLAG_UNABLE = 0;
+        int FLAG_LATEST = 1;
+        int FLAG_FORCE = 2;
+
+        @Retention(RetentionPolicy.SOURCE)
+        @IntDef({
+                FLAG_UNABLE, FLAG_LATEST, FLAG_FORCE
+        })
+        @interface Flag {
+        }
+
+        void onAppUpdatable(@Flag int flag);
+
+        void onServerMessage(String message);
     }
-      return "";
-  }
-
-  /**
-   * 강제 업데이트 버젼
-   *
-   * @return
-   */
-  private String getForceVersion() {
-    setConfig();
-    String version = firebaseRemoteConfig.getString(VERSION_FORCE);
-    return getVersion(version);
-  }
-
-  private String getVersion(String version) {
-    return StringUtil.isFull(version) ? version : StringUtil.getPureVersionString(AppUtil.getVersionName(), 3);
-  }
-
-  /***********************************
-   * interface
-   ***********************************/
-  public interface IAppVersionListener {
-    int FLAG_UNABLE = 0;
-    int FLAG_LATEST = 1;
-    int FLAG_FORCE = 2;
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef({
-      FLAG_UNABLE, FLAG_LATEST, FLAG_FORCE
-    })
-    @interface Flag {}
-
-    void onAppUpdatable(@Flag int flag);
-
-    void onServerMessage(String message);
-  }
 }