Computer >> 컴퓨터 >  >> 시스템 >> Android

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

애플리케이션의 새 버전을 출시할 때 사용자에게 이를 알리고 싶을 것입니다. 심각한 버그를 수정했든, 새로운 기능을 추가했든, 아니면 애플리케이션이 더 원활하게 또는 더 빠르게 실행되는지 여부를 알아야 합니다.

애플리케이션 개발자로서 우리는 모든 사용자가 애플리케이션의 최신 버전을 사용하기를 원합니다.

하지만 사용자가 애플리케이션의 새 버전을 알 수 있도록 하려면 어떻게 해야 할까요?

해당 질문에 대한 대답은 매우 간단합니다. 새 버전의 애플리케이션이 출시되면 알려주는 것이 어떨까요?

다양한 방법으로 이를 수행할 수 있습니다:

  • 푸시 알림 사용
  • 애플리케이션이 시작되면 알려주세요

이 글에서는 푸시 알림을 다루지 않습니다. 대신 우리는 (한두 개의 패키지를 사용하여) 사용자에게 애플리케이션의 새 버전이 출시되었음을 알리고 업데이트를 처리하는 방법을 알리는 대화 상자를 표시할 수 있는 방법을 보여주는 데 중점을 둘 것입니다.

잠깐만요, 이미 포함되어 있지 않나요?

이런 종류의 기능은 최신 모바일 OS 시스템에 이미 포함되어 있어야 한다고 생각할 것입니다. 그리고 당신 말이 맞을 것입니다. 그러나 Android에만 해당됩니다.

iOS는 (현재) 개발자에게 애플리케이션의 새 버전이 있는지 확인하고 이에 대해 사용자에게 알릴 수 있는 기능을 제공하지 않습니다. Android에는 Google Play 라이브러리의 일부인 인앱 업데이트 라이브러리가 있습니다.

이 때문에 그리고 Flutter는 두 플랫폼을 모두 지원하므로 애플리케이션의 버전 업데이트를 처리하는 데 도움이 되는 두 가지 중요한 패키지를 살펴보겠습니다.

  1. 업그레이드
  2. 인앱 업데이트

둘 다 원하는 결과를 얻을 수 있지만 수행 방법은 매우 다양합니다.

시작하기 전에 Google Play 스토어에서 직접 설치된 애플리케이션 버전이 있어야 한다는 점을 이해하는 것이 중요합니다 . 두 패키지 모두 Google Play 서비스와 애플리케이션 소유자를 확인하는 기능을 사용하므로 이는 필요합니다.

그렇게 하지 않으면 패키지 중 하나를 사용하려고 할 때 다음 오류가 표시됩니다:

_설치 오류(-10):이 기기의 어떤 사용자도 앱을 소유하고 있지 않습니다. Play에서 앱을 획득한 경우 해당 앱은 '소유'된 것입니다. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOT소유)

인앱 업데이트 패키지 사용 방법

즉시 이 패키지는 Android에서만 작동한다는 것을 알아야 합니다. 이는 내부 작동을 위해 앱 내 업데이트 라이브러리에 의존하기 때문입니다.

이 패키지는 기본적으로 Android 라이브러리의 래퍼입니다. 다음은 노출된 API 메소드입니다:

  • Future<AppUpdateInfo> checkForUpdate() :사용 가능한 업데이트가 있는지 확인
  • Future<AppUpdateResult> performImmediateUpdate() :즉시 업데이트를 수행합니다(전체 화면)
  • Future<AppUpdateResult> startFlexibleUpdate() :유연한 업데이트를 시작합니다(백그라운드 다운로드)
  • Future<void> completeFlexibleUpdate() :실제로 사용 가능한 유연한 업데이트를 설치합니다.

✋ 즉시 업데이트와 유연한 업데이트의 차이점에 대해 자세히 알아보려면 여기로 이동하세요.

패키지 설정 방법

먼저 pubspec.yaml 파일에 패키지를 추가하세요:

dependencies:
 flutter:
 sdk: flutter
 in_app_update: ^3.0.0

그런 다음 pub get을 수행합니다.

앱 업데이트를 처리하기 위한 로직을 수행하려는 애플리케이션 내에서 다음 가져오기를 추가하세요.

import 'package:in_app_update/in_app_update.dart';

먼저 애플리케이션에 업데이트가 있는지 확인하는 로직을 추가해야 합니다. 이를 위해 checkForUpdate를 사용합니다. 방법. 반환 값은 앱 업데이트의 가용성 및 진행 상황에 대한 정보가 포함된 Future입니다.

updateAvailability 속성을 사용하여 업데이트가 가능한지 확인할 수 있습니다. 업데이트가 가능한 경우 값은 UPDATE_AVAILABLE입니다. . 따라서 귀하의 방법은 다음과 같습니다:

InAppUpdate.checkForUpdate().then((updateInfo) {
 if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
 //Logic to perform an update 
 }
});

다음으로, 어떤 종류의 업데이트(유연한 업데이트 또는 즉각적인 업데이트)를 트리거할지 결정해야 합니다.

즉각적인 업데이트는 사용자에게 중요한 애플리케이션 업데이트를 위해 예약되어야 합니다. 이는 심각한 버그를 수정하거나 새로운 기능을 제공하는 버전을 의미할 수 있습니다.

즉시 업데이트를 시작하려면 performImmediateUpdate를 사용할 수 있습니다. 방법. 이 메서드는 업데이트가 성공했는지 여부를 알려주는 AppUpdateResult 열거형을 반환합니다.

이 메서드를 호출하기 전에 즉시 업데이트를 실행할 수 있는지 확인해야 합니다. immediateUpdateAllowed에 액세스하여 이를 수행합니다. AppUpdateInfo 개체에 플래그를 지정하세요.

유연한 업데이트를 실행하려면 startFleixbleUpdate를 사용합니다. 방법. 이는 백그라운드에서 실행되며 즉시 업데이트 방법과 유사합니다. 또한 AppUpdateResult 열거형을 반환합니다.

이 시나리오에서 업데이트가 성공했다면 completeFlexibleUpdate를 호출해야 합니다. 애플리케이션에 업데이트를 설치하는 방법입니다.

따라서 위의 코드 조각을 보고 다양한 유형의 업데이트에 대한 논리를 추가하면 다음과 같습니다.

InAppUpdate.checkForUpdate().then((updateInfo) {
 if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
 if (updateInfo.immediateUpdateAllowed) {
 // Perform immediate update
 InAppUpdate.performImmediateUpdate().then((appUpdateResult) {
 if (appUpdateResult == AppUpdateResult.success) {
 //App Update successful
 }
 });
 } else if (updateInfo.flexibleUpdateAllowed) {
 //Perform flexible update
 InAppUpdate.startFlexibleUpdate().then((appUpdateResult) {
 if (appUpdateResult == AppUpdateResult.success) {
 //App Update successful
 InAppUpdate.completeFlexibleUpdate();
 }
 });
 }
 }
});

업그레이드 패키지 사용 방법

첫 번째 옵션과 달리 이 옵션은 iOS와 Android 모두에 대한 솔루션을 제공합니다. 이는 저장소에서 데이터를 수집하고 이를 애플리케이션 자체의 현재 데이터와 비교하여 확인하는 데 의존합니다.

데이터를 쿼리하는 API 대신 이 패키지에는 내부적으로 논리를 수행하는 위젯이 있습니다.

패키지 설정 방법

먼저 pubspec.yaml 파일에 패키지를 추가하세요:

dependencies:
 flutter:
 sdk: flutter
 upgrader: ^5.0.0

그런 다음 pub get을 수행합니다.

앱 업데이트를 처리하기 위한 로직을 수행하려는 애플리케이션 내에서 다음 가져오기를 추가하세요.

import 'package:upgrader/upgrader.dart';

이 두 옵션의 주요 차이점은 UI에 불과하므로 가장 적합한 옵션을 선택하세요.

이 패키지를 통합하려면 UpgradeAlert로 본문 위젯을 래핑해야 합니다. 또는 UpgradeCard . 아래는 예시입니다:

class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return MaterialApp(
 title: applicationName,
 home: UpgradeAlert( /// <------------------
 child: MainPage(
 key: Key("YOUR_KEY"),
 title: applicationName
 ),
 )
 );
 }
}

스토어에서 애플리케이션의 새 버전을 사용할 수 있는 경우 다음이 표시됩니다:

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

테스트하려면 다음을 추가하세요:

await Upgrader.clearSavedSettings()

main.dart 파일의 기본 메소드 내부에 있습니다.

아시다시피 Upgrader 패키지에 대해 설정할 수 있는 구성은 다양합니다. 직접 가서 확인해 보시기를 적극 권장합니다.

패키지 테스트 방법

어떤 패키지를 선택하든 관계없이 논리가 제대로 작동하는지 알아야 합니다.

하지만 애플리케이션의 공식 버전을 출시하지 않고 어떻게 그렇게 할 수 있습니까? Google Play Console에서 내부 테스트 옵션을 사용할 수 있습니다. 내부 테스터에게 애플리케이션의 새 버전을 공개하면 공개 버전이 아니며 업그레이드 기능을 테스트할 수 있습니다.

당신이 해야 할 일은 다음과 같습니다:

  1. Google Play Console 계정에 로그인하고 업데이트 로직을 적용하기 위해 작업 중인 애플리케이션으로 이동하세요.
  2. 설정 → 내부 앱 공유에서 테스터 관리로 이동하여 테스터가 공유 애플리케이션을 다운로드하고 설치할 수 있도록 허용하세요. 링크나 이메일을 통해 선택하실 수 있습니다.

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

  1. 그런 다음 테스트 → 내부 테스트로 이동하여 새 릴리스 만들기 버튼(오른쪽 상단)을 클릭하세요.

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

  1. 릴리스를 수행한 후에는 기본 내부 테스트 페이지로 돌아가 테스터 탭을 클릭할 수 있습니다. 거기에서 테스터 이메일이 포함된 목록을 볼 수 있습니다(현재는 비어 있음). 파란색 화살표 아이콘을 클릭하세요.

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

  1. 이 화면에서 자신을 내부 테스터로 추가할 수 있습니다(이메일 주소 추가에서).

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

  1. 완료되면 내부 테스트 창으로 돌아갈 수 있습니다. 아래로 스크롤하면 테스터가 테스트에 참여하는 방법이 표시됩니다. 링크 복사 버튼이 표시됩니다.

이제 버튼을 클릭하고 링크를 자신에게 보내면 새 버전의 애플리케이션을 다운로드할 수 있습니다.

위 단계 중 하나를 수행하지 못하면 생성된 링크가 찾을 수 없음(오류 404) 페이지로 연결됩니다:

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

모든 작업을 성공적으로 수행했다면 생성된 링크를 클릭하면 다음이 표시됩니다:

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

이 오류가 표시되는 경우:

_Install Error(-6):현재 장치 상태(예:배터리 부족, 디스크 공간 부족 등)로 인해 다운로드/설치가 허용되지 않습니다. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INSTALL_NOT허용됨)

이는 에뮬레이트된 기기에서 애플리케이션을 실행하고 있으며 해당 기기에 Google Play 스토어를 설치하고 로그인해야 함을 의미할 수 있습니다.

마무리

앱 내 업데이트 패키지를 내 애플리케이션과 통합할 때 동일한 프로세스를 거쳐야 했기 때문에 이 글을 작성했습니다.

Google Play 스토어에서 확인해 보세요.

인앱 업데이트:Flutter 사용자에게 새 버전을 효과적으로 알리는 방법

여기에서 전체 소스 코드를 확인하세요:

읽어주셔서 감사합니다!

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요