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 @@