[react-native-code-push 적용하기]
https://honeystorage.tistory.com/290
[앱 버전 관리, 어떻게 하는게 좋을까?]
https://honeystorage.tistory.com/310
위 두 포스팅을 통해
code-push를 적용하는 방법과
적용 후 어떻게 버전관리를 할지에 대한
저의 고민들을 살펴볼 수 있습니다.
마지막으로
저의 코드푸시 세팅을 공유하고
왜 이런 세팅을 하게되었는지
저의 생각을 정리하고자 포스팅합니다.
코드 푸시 & 버전 체크 플로우
1. 앱이 실행됨
2. 상위 앱 버전이 출시되었는지 API를 호출해 체크
2-1. 상위 앱 버전 존재 -> A
2-2. 상위 앱 버전 없음 -> B
A-1. 필수 업데이트 Alert 오픈
A-2. Alert 버튼 클릭 -> 스토어로 이동
B-1. checkForUpdate메서드로 업데이트 버전이 있는지 체크
B-2-1. 앱 업데이트 버전 없음 -> ㄱ
B-2-2. 앱 업데이트 버전 있음 -> ㄴ
ㄱ-1. 앱 메인 실행
ㄴ-1. 업데이트 패키지 download 진행
ㄴ-2-1. 기준 시간(ex. 10초)이내에 앱 업데이트 완료 -> a
ㄴ-2-2. 기준 시간(ex. 10초)이내에 앱 업데이트 실패 (지연됨) -> b
a-1. 앱 메인 실행
b-1. 앱 메인 실행
b-2. 백그라운드에서 앱 업데이트 패키지 다운로드 계속 실행
b-3. 패키지 다운로드 완료
b-4. 앱 업데이트 진행 안내 Alert 오픈
b-5-1. Alert, 취소 버튼 터치 -> 앱 계속 사용
b-5-2. Alert, 업데이트 버튼 터치 -> 앱 재실행
도식화
악필이지만
좀더 쉬운 이해를 위해
도식화해봤습니다.
위의 흐름에서 저의 고민의 흐름은 이렇습니다.
1) 버전 관리 전략을 어떻게할까?
2) 코드푸시는 핫픽스에만 사용, 최신버전 필수 업데이트는 스토어에서
3) 어떻게 최신버전을 서빙할까? 서버에서 체크
4) 코드푸시가 종종 지연되네...
5) 코드푸시 서버 상태로 업데이트가 지연되면 어쩌지?
6) 업데이트 페이지 뛰어넘기 + 백그라운드 설치
7) 백그라운드 설치 완료 후 업데이트 안내 팝업
8) 중요 업데이트 진행 안내 + 업데이트 권장
좋은 처리 방안인지는
조금 더 생각해볼 여지가 있지만
자체 코드푸시 서버를 구축하지 않는한
이정도의 처리가 최선이 아닐까 하는 생각이 듭니다.