diff --git a/.gitignore b/.gitignore
index d1664eb3..e7b396e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,4 +69,7 @@ ios/tmp.xcconfig
#fcm
ios/GoogleService-Info.plist
-android/app/google-services.json
\ No newline at end of file
+android/app/google-services.json
+
+#code-push
+android/app/src/main/assets/appcenter-config.json
\ No newline at end of file
diff --git a/App.tsx b/App.tsx
index d42e331c..750ec0e7 100644
--- a/App.tsx
+++ b/App.tsx
@@ -18,16 +18,17 @@ import {
Text,
TextInput,
} from 'react-native';
+import CodePush, { CodePushOptions } from 'react-native-code-push';
import ErrorBoundary from 'react-native-error-boundary';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import SplashScreen from 'react-native-splash-screen';
import { MyTheme, colors } from 'styles/theme';
// dayjs setting
+import DialogPortalProvider from 'components/common/dialogs/DialogPortalProvider';
import dayjs from 'dayjs';
import 'dayjs/locale/ko';
import { useAuthorizeStore } from 'stores/Authorize';
-import DialogPortalProvider from 'components/common/dialogs/DialogPortalProvider';
dayjs.locale('ko');
@@ -121,4 +122,14 @@ interface TextInputWithDefaultProps extends TextInput {
).defaultProps!.allowFontScaling = false;
(TextInput as unknown as TextInputWithDefaultProps).defaultProps!.padding = 0;
-export default App;
+const codePushOptions: CodePushOptions = {
+ checkFrequency: CodePush.CheckFrequency.MANUAL,
+ // 언제 업데이트를 체크하고 반영할지를 정한다.
+ // ON_APP_RESUME은 Background에서 Foreground로 오는 것을 의미
+ // ON_APP_START은 앱이 실행되는(켜지는) 순간을 의미
+ installMode: CodePush.InstallMode.IMMEDIATE,
+ mandatoryInstallMode: CodePush.InstallMode.IMMEDIATE,
+ // 업데이트를 어떻게 설치할 것인지 (IMMEDIATE는 강제설치를 의미)
+};
+
+export default CodePush(codePushOptions)(App);
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 6063f588..61b8dece 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,5 +1,6 @@
apply plugin: "com.android.application"
apply plugin: "com.facebook.react"
+apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
import com.android.build.OutputFile
diff --git a/android/app/src/main/java/com/opener/openoff/MainApplication.java b/android/app/src/main/java/com/opener/openoff/MainApplication.java
index 757d4288..58354042 100644
--- a/android/app/src/main/java/com/opener/openoff/MainApplication.java
+++ b/android/app/src/main/java/com/opener/openoff/MainApplication.java
@@ -8,6 +8,7 @@
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactNativeHost;
import com.facebook.soloader.SoLoader;
+import com.microsoft.codepush.react.CodePush;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
@@ -42,6 +43,11 @@ protected boolean isNewArchEnabled() {
protected Boolean isHermesEnabled() {
return BuildConfig.IS_HERMES_ENABLED;
}
+
+ @Override
+ protected String getJSBundleFile() {
+ return CodePush.getJSBundleFile();
+ }
};
@Override
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index d7bb28c1..7ce06d58 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -3,4 +3,7 @@
@string/REACT_APP_KAKAO_APP_KEY
logo
OPEN;OFF
+ @string/REACT_APP_ANDROID_CODE_PUSH_APP_KEY
+ DO_NOT_ASK_JAVASCRIPT
+ ALWAYS_SEND
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index c7fc8dff..9d8e7582 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -4,6 +4,7 @@