[React-Native] 앱 버전 업데이트 (스토어 버전)

이명제·2022년 11월 18일
0

1. sp-react-native-in-app-updates 라이브러리 활용 (android & ios)

https://github.com/SudoPlz/sp-react-native-in-app-updates

2. OS에 따른 기능 차이점

android는 앱 안에서 업데이트를 진행시키는 in-app-update 기능을 사용할 수 있지만,

ios는 앱 안에서 업데이트를 진행시키는 기능을 현재 구현되지 않았습니다. (다른 모든 곳에서도 해당 기능 구현한 곳은 못봤고, 구현 역시 불가능하다고 여겨집니다.)

3. 기능 구현 (코드 예시)

android는 in-app-update 기능을 사용했지만, ios는 별도로 linking을 이용해서 app store로 보냈습니다. (굳이 라이브러리 기능을 사용하지 않아도 괜찮아보여서)

import SpInAppUpdates, {
  NeedsUpdateResponse,
  IAUUpdateKind,
  StartUpdateOptions,
} from 'sp-react-native-in-app-updates';

const inAppUpdates = new SpInAppUpdates(
  false // isDebug
);

// curVersion의 버전은 현재 앱의 버전을 넣어주어야 한다. (react-native-device-info 활용할 것)
inAppUpdates.checkNeedsUpdate({ curVersion: '0.0.8' }).then((result) => {

  /** curVersion 버전이 스토어 버전보다 낮다면 */
  if (result.shouldUpdate) {

    /** android */
    if (Platform.OS === 'android') {
      const updateOptions: StartUpdateOptions = {
        updateType: IAUUpdateKind.IMMEDIATE,
      };

      inAppUpdates.startUpdate(updateOptions);
      inAppUpdates.installUpdate();
    } else if (Platform.OS === 'ios') {

      /** app store로 보낸다 (app store가 깔려있어야만 작동, 뒤 숫자는 앱 id) */
      Linking.openURL('itms-apps://itunes.apple.com/app/1609209503');
    }
  }
});

4. android는 ‘내부 앱 공유’ 라는 기능을 통해 기능 테스팅을 진행

google play console에 위치

내부 앱 공유를 통한 apk 공유

5. 내부 앱 공유 기능을 활용한 기능 테스팅법

우선 실제 디바이스 기기를 준비합니다.

  • 1단계: Android 기기에서 내부 앱 공유 활성화 (google play console)

  • 2단계: 더 낮은 버전의 앱(예: 버전 100)으로 릴리스 apk(또는 aab) 만들기

  • 3단계: 더 높은 버전의 앱(예: 버전 101)으로 릴리스 apk(또는 aab) 만들기 (2단계 apk에서 업데이트를 해줄 apk 용도)

  • 4단계: 두 APK를 내부 앱 공유에 업로드

  • 5단계: 장치에 버전 100을 설치합니다.

  • 6단계: 기기에서 버전 101의 내부 앱 공유 링크를 열지만 설치하지는 않습니다. (링크를 열어줘야 101버전을 인식합니다)

    • 해당 링크 내의 버튼에 업데이트(설치가 아님)가 표시되는지 확인합니다.

    • 이는 Google Play에서 사용 가능한 업데이트가 있음을 알고 있음을 의미합니다.

  • 7단계: 설치된(100) 버전의 앱을 열고 코드가 작동하는지 확인합니다(업데이트 팝업이 표시됨)

6. 주의사항

기존에 코드푸시를 사용하고 있다면, 충돌되지 않게 설계해야 합니다.

최신버전이 아니라면 코드푸시 분기를 태우지 않는 것이 방법이 될 수 있습니다.

0개의 댓글

관련 채용 정보