Flutter应用更新检查插件app_update_checker的使用
Flutter应用更新检查插件app_update_checker的使用
插件概述
app_update_checker
是一个用于帮助处理Flutter应用程序更新的插件。它旨在以更灵活的方式处理应用更新,修复问题并绕过 Upgrader
包中的一些限制。你可以自定义显示对话框、模态窗口或小卡片来激励或强制用户更新应用。该插件还支持旧版本的弃用、强制更新和回滚更新等功能。
设置方法
app_update_checker
提供了两种获取更新信息的方法:
- 从应用商店获取:这种方法较为简单,但灵活性较低,不支持许多功能。
- 从自定义更新配置文件获取:这种方法需要一些自定义,但可以在所有平台上使用,并且允许对更新过程进行完全控制和定制。目前,插件主要专注于第二种方法。
更新配置
以下是 app_update_checker
的完整配置API结构示例:
# 默认发布设置
release_settings:
# 可选
title:
en: |-
## New version for ($appName)[https://example.com]
### Version $releaseVersion is available!
es: La versión $releaseVersion está disponible!
ru: Доступна новая версия!
# 可选
description: |-
A new version of $appName is available!
Version $releaseVersion is now available. You have a $appVersion
# 可选,允许用户忽略此特定版本,直到有新版本可用
can_ignore_release: true
# 更新通知将重复显示给用户的间隔时间(小时)
reminder_period_hours: 48
# 发布后必须经过的时间,然后才会向所有用户显示更新通知
release_delay_hours: 48
# 早于此版本的版本将收到过时通知,但可以延迟更新
deprecated_before_version: 0.3.7
# 早于此版本的版本必须更新到最新版本,没有延迟更新的选项
required_minimum_version: 0.1.0
# 可选,基于平台和应用ID设置
stores:
- name: googlePlay
url: https://example.com
- name: appStore
url: https://example.com
- name: appGallery
url: https://example.com
- name: ruStore
url: https://example.com
- name: gitHub
url: https://example.com
platforms:
- android
- windows
- macos
- linux
releases:
- version: 0.3.7 # 必填
build_number: 21 # 可选,用于细化版本
type: active # 可选,默认为active
release_note: |-
# Big update!
[click](https://example.com) - full changelog.
### Short notes
- Added bugs
- Fixed features
pub_date_utc: '2024-08-24 15:35:00' # 可选,用于延迟发布
can_ignore_release: true # 可选,覆盖默认值
reminder_period_hours: 48 # 可选,覆盖默认值
required_minimum_version: 48 # 可选,覆盖默认值
stores:
- googlePlay
- appStore
- ruStore
- name: github
url: https://example.com
platforms:
- android
- ios
- aurora
- version: 0.3.8
ref_version: 0.3.7 # 引用另一个版本,使用其所有参数
release_note: Minor improvements
is_super_ultra_mega_release: true # 自定义参数,可以从应用中访问
Shorebird集成
如果你使用 Shorebird
进行代码推送,app_update_checker
也可以处理并显示有关新补丁的信息,包括发布说明,并提供重启应用的功能。以下是 Shorebird
补丁配置的示例:
# 默认补丁设置
path_settings:
title: The new patch is available!
description: It is needed to fix errors in the app.
releases:
- version: 1.3.7
patches:
- patch_number: 1 # 必填
type: active # 可选,默认为active
title: New patch for $appVersion
patch_note: Critical fix
build_number: 21 # 可选,用于细化版本
- patch_number: 2
ref_patch_number: 1 # 引用另一个补丁,使用其所有参数
ref_version: 1.3.7 # 引用不同版本的补丁
build_number: 23 # 可选,用于细化版本
platforms:
- android
- ios
完整示例Demo
以下是一个完整的示例项目,展示了如何在Flutter应用中使用 app_update_checker
插件来检查和提示用户更新应用。
import 'package:flutter/material.dart';
import 'package:app_update_checker/app_update_checker.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('App Update Checker Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 检查更新
final updateInfo = await AppUpdateChecker.checkForUpdate(
configUrl: 'https://example.com/update_config.yaml', // 自定义更新配置文件URL
);
if (updateInfo != null && updateInfo.isUpdateAvailable) {
// 显示更新提示对话框
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(updateInfo.title ?? 'New Update Available'),
content: Text(updateInfo.description ?? 'A new version of the app is available.'),
actions: [
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text('Later'),
),
TextButton(
onPressed: () {
// 打开应用商店或下载链接
AppUpdateChecker.openStore();
Navigator.pop(context);
},
child: const Text('Update Now'),
),
],
),
);
} else {
// 没有可用更新
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('No updates available.')),
);
}
},
child: const Text('Check for Updates'),
),
),
),
);
}
}
更多关于Flutter应用更新检查插件app_update_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter应用更新检查插件app_update_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用app_update_checker
插件来检查应用更新的示例代码。
首先,确保你已经在pubspec.yaml
文件中添加了app_update_checker
依赖项:
dependencies:
flutter:
sdk: flutter
app_update_checker: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖项。
使用示例
以下是一个完整的示例,展示了如何使用app_update_checker
插件来检查应用更新:
- 导入插件
在你的Dart文件中(例如main.dart
),导入插件:
import 'package:app_update_checker/app_update_checker.dart';
import 'package:flutter/material.dart';
- 创建检查更新的函数
创建一个函数来检查应用更新:
Future<void> checkForUpdates() async {
try {
// 检查是否有更新
AppUpdateInfo updateInfo = await AppUpdateChecker.checkForUpdate();
if (updateInfo.updateAvailable) {
// 更新可用
String updateMessage = "新版本 ${updateInfo.version} 可用!";
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("更新可用"),
content: Text(updateMessage),
actions: <Widget>[
TextButton(
onPressed: () {
// 打开应用市场
AppUpdateChecker.openAppStore(updateInfo.storeLink);
},
child: Text("下载更新"),
),
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("稍后更新"),
),
],
);
},
);
} else {
// 没有更新
print("当前版本是最新版本");
}
} catch (e) {
// 处理错误
print("检查更新时出错: $e");
}
}
- 在应用启动时调用检查更新的函数
例如,在MyApp
类的initState
方法中调用checkForUpdates
函数:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
// 在应用启动时检查更新
checkForUpdates();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Text('Hello, Flutter!'),
),
);
}
}
注意事项
- 权限:确保你的应用具有访问网络的权限,因为检查更新通常需要从互联网获取数据。
- 平台配置:对于iOS和Android,你可能需要在各自的配置文件中进行一些设置,以便插件能够正确工作。
- 版本管理:确保你正确管理应用的版本号,以便插件能够正确比较当前版本和最新版本。
这样,你就可以在Flutter应用中使用app_update_checker
插件来检查应用更新了。