개발자
codepush는 마이크로소프트사에서 자체적으로 서비스를 제공하는거라고 알고있습니다. 회사 업무 특성상 자주 배포해야하는 이슈때문에 코드푸시를 적용했습니다. 코드푸시 업데이트 창이 뜨게 되면 사용자의 선택으로 업데이트를 진행한 후 다시 로딩이 됩니다. 현재는 코드푸시 업데이트는 코드푸시 업데이트대로 뜨고, 앱은 앱대로 뜨도록 구현이 되어있습니다. 이걸 코드푸시 업데이트가 있으면 코드푸시 업데이트를 띄우고, 업데이트가 없다면 업데이트를 안띄우고 앱으로 바로 넘어가도록 수정을 하고자합니다. 궁금한점은, 1. 마이크로소프트사의 서버가 불안정하다고 많은 문서를 봤습니다. 만약 코드푸시 업데이트가 있으면 업데이트가 띄우도록, 없으면 없는대로 앱을 구현할 수 있도록 한다고 했을때, 업데이트 유무를 판단하는 codePush.checkForUpdate() 를 통해 구현을 한다면, 데이터를 가져오는데 시간이 지연될 수 있다고 생각이 듭니다. 시간이 지연되더라도 최소 ex)5초 가 지나면 업데이트를 무시하고 앱을 구현할 수 있는 방법이 있을까요? 많은 블로그에서는 코드푸시 업데이트 유무로 판단한 후 업데이트창을 띄울지 말지를 결정을 하는것같은데, 서버가 불안정할때는 지연시간이 길어지지 않을까.. 싶습니다. 코드푸시를 업무에서 적용하고 있는 분들 도움을 주세요.... ㅜㅜ 추가적으로 android에서 코드푸시 업데이트 창이 떠서 업데이트확인 버튼을 눌렀음에도 불구하고 아무런 반응이 없는 경우가 있습니다. 이 경우에 다시 앱을 재시작하면 다시 코드푸시 업데이트 창이 떠서 문제없이 해결할 수 있었습니다. 하지만, ios의 경우에는 같은 상황이여도 재시작하면 코드푸시 업데이트 창이 안뜨는경우가 간혹 있습니다. maxRetryAttempts: 3 이 설정을 추가하여도 안되는 경우가 간혹 발생하는데, 어떻게 처리 해야할지 도움을 주시기 바랍니다... ㅜㅜ
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 02월 13일
CodePush 라이브러리에서 제공하는 `checkForUpdate` 함수를 사용하여 업데이트의 유무를 판단하고, 특정 시간이 지나도 결과가 반환되지 않을 경우 주기적으로 체크하는 방식을 사용할 수 있습니다. 먼저, `setTimeout`을 이용해서 약속된 시간(예: 5초)이 지나면 강제로 앱을 로드하는 코드를 작성하고, 만약 해당 시간 안에 CodePush 업데이트 결과가 반환되면 timeout을 clear 해주는 방식으로 구현해볼 수 있습니다. 예시 코드는 아래와 같습니다: ```javascript let isTimeout = false; const timeoutId = setTimeout(() => { isTimeout = true; // Load app... }, 5000); codePush.checkForUpdate().then((update) => { if (!isTimeout) { clearTimeout(timeoutId); if (update) { codePush.sync(...); // Proceed with update } else { // Load app... } } }); ``` 이렇게 하면 데이터 호출에 따른 대기 시간이 길어져도 최소한의 로딩 시간 후에 앱 로딩을 진행할 수 있습니다. 하지만 이 방법에도 한계가 존재합니다. 서버의 심각한 불안정 상태에서는 업데이트 정보를 받아오지 못해 원치 않는 버그나 문제가 발생할 가능성이 있습니다. 따라서 CodePush를 사용하는 서비스에서는 사용자 경험을 해치지 않도록 충분한 예외 처리와 테스트가 필요합니다. 추가적으로, React Native의 `AppState`를 활용하여 앱이 background로 갈 때 업데이트를 체크하고, foreground로 올 때 적용하는 방법을 생각해볼 수 있습니다. 이렇게 한다면 사용자에게 직접적인 불편함 없이 업데이트를 진행할 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!