Flutter 앱을 지속적으로 최신 상태로 유지하는 것은 사용자 경험을 향상하고 보안성을 강화하는 중요한 요소입니다. 이번 글에서는 app_version_update
패키지를 활용하여 Flutter 애플리케이션에서 간편하게 자동 업데이트를 구현하는 방법을 단계별로 안내하겠습니다.
1. 사전 준비 사항
Flutter 프로젝트를 열고, 터미널에서 다음 명령어로 app_version_update
패키지를 추가하세요.
flutter pub add app_version_update
이 패키지는 최신 버전 정보를 확인하고 업데이트 여부를 결정할 수 있는 기능을 제공합니다.
2. 최신 버전 확인 로직 구현
app_version_update
패키지는 서버에 버전 정보를 요청하고, 로컬 앱 버전과 비교해 업데이트가 필요한지 확인합니다. 이를 위해 먼저 버전 정보가 포함된 JSON 파일을 서버에 업로드해야 합니다. 파일에는 현재 최신 버전 번호와 다운로드 URL이 포함되어 있어야 합니다.
예제 JSON 파일 (https://example.com/version.json
)
{
"version": "1.1.0",
"force": true,
"url": "https://example.com/download/app.apk"
}
version
: 최신 버전 번호입니다.force
: 강제 업데이트 여부를 결정합니다. (true일 경우, 업데이트가 필수로 요구됨)url
: APK 다운로드 링크입니다.
3. 업데이트 확인 로직 추가
다음으로, 앱에서 이 JSON 파일을 읽어 현재 버전과 비교하는 로직을 구현해야 합니다.
import 'package:app_version_update/app_version_update.dart';
Future<void> checkForUpdates(BuildContext context) async {
final appVersionUpdate = AppVersionUpdate(
androidUrl: 'https://example.com/version.json',
);
final info = await appVersionUpdate.fetchUpdateInfo();
if (info.canUpdate) {
_showUpdateDialog(context, info.downloadUrl, info.forceUpdate);
}
}
void _showUpdateDialog(BuildContext context, String url, bool forceUpdate) {
showDialog(
context: context,
barrierDismissible: !forceUpdate,
builder: (BuildContext context) {
return AlertDialog(
title: Text("업데이트 필요"),
content: Text("새로운 버전이 있습니다. 업데이트하시겠습니까?"),
actions: <Widget>[
TextButton(
onPressed: () {
if (forceUpdate) return;
Navigator.of(context).pop();
},
child: Text("나중에"),
),
TextButton(
onPressed: () {
_launchURL(url);
},
child: Text("업데이트"),
),
],
);
},
);
}
void _launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
4. 주요 함수 설명
fetchUpdateInfo
: 서버의 최신 버전 정보를 가져와 현재 앱 버전과 비교합니다.canUpdate
: 현재 앱 버전보다 서버의 최신 버전이 높은 경우true
를 반환합니다._showUpdateDialog
: 업데이트가 필요할 때 표시할 다이얼로그를 구성합니다._launchURL
: 사용자가 "업데이트" 버튼을 클릭하면 APK 다운로드 페이지로 이동합니다.
5. 업데이트 알림 구성
위 로직을 initState
또는 앱의 특정 초기화 시점에 추가하여, 앱 실행 시 업데이트 여부를 확인하도록 설정합니다.
@override
void initState() {
super.initState();
checkForUpdates(context);
}
결론
app_version_update
패키지를 사용하면 Flutter 애플리케이션에 자동 업데이트 기능을 간편하게 추가할 수 있습니다.