react-native + code-push 사용후기

코드 푸쉬는 MS에서 만든 오픈소스로서 앱을 심사없이도 실시간 업데이트를 가능하게 해주는 모듈입니다.
리엑트 네이티브에서는 네이티브 코드와 설정이 아닌 Javascript단의 코드와 assets(이미지, 폰트 등) 의 요소들을 앱 심사없이 바로 업데이트 할 수 있습니다.

UI 없이 (MS 에져프로젝트 관련 사이트가 있긴 한데 없다고 보시면 됩니다. ) CLI를 통해 관리가 가능하고
대략적인 프로세스는

  1. code-push에 앱 등록
  2. 발급된 키를 이용하여 React-native iOS, Android에 Codepush 설정 (네이티브 설정이 필요합니다. )
  3. Staging으로 실시간 릴리즈
  4. 확인 후 이상없으면 Production 버전으로 릴리즈

뭐 사용자의 25프로만 적용 이라던지 앱 실행시 강제 업데이트 후 재실행, 다음 앱 실행시 업데이트 등의 추가적인 옵션을 설정 가능합니다.

현재 스토어에 리엑트 네이티브로 제작된 안드로이드 앱에 javascript 소스상의 텍스트를 수정할 부분이 있어 적용을 해 보았는데 실시간으로 업데이트가 되는것을 확인하였습니다. 앱 실행후 백그라운드에서 업데이트 관련 소스들을 다운로드 한 후 재실행되는 과정이 초기 설정에 맞춰져 자동으로 수행됩니다.
특히 iOS는 심사가 최소 이틀 이상 걸리게 되어 있는데 급하게 수정해야하는 버그나 텍스트, 이미지 부분에 적용하기 좋아보입니다.

적용해보지 않으시겠습니까?

code-push documentation: https://microsoft.github.io/code-push/docs/cli.html

3개의 좋아요

codepush는 정말 좋은서비스죠.

그런데 RN에서 패키징할 때 코드에서 사용하지 않았던 UI요소나 API도 codepush로 밀어넣었을 때 사용 가능한가요?

타이타늄은 한번도 사용하지 않는 모듈은 패키징 단계에서 빼버려서 주의를 해야하거든요.

그리고, Android 쪽에서는 한번도 사용하지 않았으면서 권한획득이 필요한 네이티브 API는 안될거에요.
이건 처음 패키징할 때 manifest에 필요한 요소라서 말이죠.

code push를 쓰면서 codepush.h를 찾을 수 없다는 에러는 잊을만 하면 한번씩 나오는데 이거 뭐 확실한 해결방법을 아시는 분?

다음 링크의 글들은 도움이 되지 않네요.

결국 정상 작동하던 commit으로 reset하면 되는데 왜 갑자기 안되는지 원인파악은 못했습니다.
diff를 해봐도 특이사항이 없어 보이거든요.

브릿지가 대단히 말썽이어서 개발중에 적용하다가 빼버렸죠. ;;;
정말로 이상적으로 느껴지는 서비스이긴 합니다. ㅎㅎ

새로운 답변이 올라오긴 했네요. 요즘은 안뜨는데 전에는 계속 떠서 스트레스 받은 기억이 있습니다. 저도 원인이 궁금해요.

말씀하신대로 import를 안했던 라이브러리는 사용이 안될거 같습니다. 테스트는 안해봤네요.
안드로이드 부분 팁 감사합니다!

iOS는 단비같은 존재입니다 ㅎㅎ

1개의 좋아요

지금은 iOS만 하고 있는데…
AlertIOS를 처음 넣어서 code-push해보니 되었었고 native 코드가 포함된 3rd-party 컴포넌트를 code-push로 넣으면 다들 예상하셨겠지만 앱이 죽어요. :slight_smile:

앱 업데이트는 잘되는데 restart하면 앱이 계속 rollback합니다.
onNextRestart 모드도 처음 restart할 때는 잘 설치된 다음에 다시 restart하면 rollback 됩니다.
해당 이슈가 글은 봤는데 해결방법은 못찾겠네요
앱은 rn은 아니고 react로 개발한걸 cordova로 감싸서 서비스 하고 있습니다.

@crazywook 업데이트 후에 롤백이 되는 것은 업데이트 후 정상 구동이 되었다고 코드푸시에게 알리지 않았거나 실재 업데이트 후 실행에 실패했기 때문입니다. 코드푸시에게 정상으로 구도오디었다고 알리는 것은 설정에 따라 자동으로 알리기도합니다. 다음 함수를 확인해보세요.

codePush.notifyAppReady()