Flutter应用更新管理插件mo_app_update的使用
Flutter应用更新管理插件mo_app_update的使用
简介
mo_app_update
是一个由 Moberan 开发的用于 Flutter 应用更新检查的插件。它可以帮助开发者轻松地在 Android 和 iOS 上实现应用更新功能。
使用步骤
Android 自更新
1. 添加 info.json
和 APK 文件到公共域
首先,你需要在服务器上放置一个 info.json
文件,该文件包含了应用版本信息及下载链接。以下是一个示例 info.json
文件:
{
"android": {
"2": {
"downloadUrl": "https://some.apk",
"versionString": "0.0.2",
"priority": "2",
"changelog": {
"ko-kr": "테스트",
"en-us": "Test"
}
},
"1": {
"downloadUrl": "...",
"versionString": "0.0.1",
"priority": "0",
"changelog": {
"ko-kr": "최초 버전",
"en-us": "Init version"
}
}
}
}
确保将 downloadUrl
替换为实际的 APK 文件的下载链接。
2. 在项目中添加依赖
在你的 pubspec.yaml
文件中添加 mo_app_update
插件:
flutter pub add mo_app_update
3. 编写 Flutter 代码
在 Flutter 代码中初始化插件,并调用相关方法来检查和处理应用更新。
import 'package:flutter/material.dart';
import 'package:mo_app_update/mo_app_update.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
MoAppUpdate? _moAppUpdatePlugin;
Future<void> init() async {
_moAppUpdatePlugin = await MoAppUpdate.initialize(
mode: MoAppUpdateMode.self,
selfOption: MoAppUpdateSelfOption(
infoUrl: 'https://minio.moberan.com/moappupdate/android/info.json',
),
);
setState(() {});
}
[@override](/user/override)
void initState() {
super.initState();
init();
}
Future<void> showSimpleDialog({
required String message,
List<String> buttons = const ['OK'],
}) async {
await showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(message),
actions: buttons.map((e) => TextButton(
onPressed: () {
Navigator.pop(context, e);
},
child: Text(e),
)).toList(),
),
);
}
Future<void> onCheckUpdate() async {
var info = await _moAppUpdatePlugin?.getUpdateInfo();
setState(() {});
if (info == null || info.hasUpdate == false) {
await showSimpleDialog(
message: '无更新',
buttons: ['OK'],
);
return;
}
var res = await showSimpleDialog(
message: '有新版本 ${info.newVersionString} 可用',
buttons: ['忽略', '更新'],
);
if (res != '更新') {
return;
}
try {
showDialog(
context: context,
barrierDismissible: false,
builder: (context) => const Dialog(
child: Center(
child: CircularProgressIndicator(),
),
),
);
var res = await _moAppUpdatePlugin?.procedureUpdate(info);
Navigator.pop(context);
} catch (e) {
showSimpleDialog(
message: e.toString(),
buttons: ['OK'],
);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('当前版本: ${_moAppUpdatePlugin?.updateInfo?.currentVersionString ?? ''}'),
Text('新版本: ${_moAppUpdatePlugin?.updateInfo?.newVersionString ?? ''}'),
Text('更新状态: ${_moAppUpdatePlugin?.updateInfo?.hasUpdate == true ? '存在' : '不存在'}'),
ElevatedButton(
child: const Text('检查更新'),
onPressed: onCheckUpdate,
),
ElevatedButton(
child: const Text('清除更新信息'),
onPressed: () {
_moAppUpdatePlugin?.clearUpdateInfo();
setState(() {});
},
),
],
),
),
);
}
}
更多关于Flutter应用更新管理插件mo_app_update的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter应用更新管理插件mo_app_update的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
mo_app_update
是一个用于 Flutter 应用更新的插件,它可以帮助开发者轻松地管理应用的更新流程,包括检查更新、下载更新包、安装更新等操作。以下是 mo_app_update
插件的使用步骤和示例代码。
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 mo_app_update
插件的依赖:
dependencies:
flutter:
sdk: flutter
mo_app_update: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化插件
在使用 mo_app_update
插件之前,你需要对其进行初始化。通常,你可以在 main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:mo_app_update/mo_app_update.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 mo_app_update
await MoAppUpdate.init(
baseUrl: 'https://your-update-server.com', // 检查更新的服务器地址
);
runApp(MyApp());
}
3. 检查更新
你可以在应用的某个页面中调用 checkForUpdate
方法来检查是否有更新:
import 'package:flutter/material.dart';
import 'package:mo_app_update/mo_app_update.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('App Update Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 检查更新
final updateInfo = await MoAppUpdate.checkForUpdate();
if (updateInfo != null && updateInfo.updateAvailable) {
// 如果有更新,显示更新对话框
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('New Update Available'),
content: Text('A new version ${updateInfo.newVersion} is available. Do you want to update now?'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('Later'),
),
TextButton(
onPressed: () async {
Navigator.of(context).pop();
// 下载并安装更新
await MoAppUpdate.downloadAndInstallUpdate();
},
child: Text('Update Now'),
),
],
),
);
} else {
// 没有更新
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Your app is up to date!')),
);
}
},
child: Text('Check for Update'),
),
),
);
}
}
4. 下载并安装更新
如果检查到有更新,你可以调用 downloadAndInstallUpdate
方法来下载并安装更新:
await MoAppUpdate.downloadAndInstallUpdate();
5. 处理更新状态
mo_app_update
插件还提供了一些回调来处理更新的不同状态,例如下载进度、下载完成、安装完成等。你可以通过监听这些回调来更新 UI 或执行其他操作:
MoAppUpdate.setListener(
onProgress: (progress) {
// 处理下载进度
print('Download progress: $progress%');
},
onComplete: () {
// 处理下载完成
print('Download complete');
},
onError: (error) {
// 处理错误
print('Error: $error');
},
);
6. 其他配置
mo_app_update
插件还支持一些其他配置,例如设置下载路径、自定义更新对话框等。你可以参考插件的文档或源代码来了解更多细节。
7. 注意事项
- 在使用
mo_app_update
插件时,请确保你有一个可靠的更新服务器来提供更新信息。 - 在 Android 设备上安装 APK 时,需要请求
WRITE_EXTERNAL_STORAGE
和REQUEST_INSTALL_PACKAGES
权限。你可以在AndroidManifest.xml
中添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>