Flutter应用版本升级插件flutter_mobile_upgrader的使用
Flutter应用版本升级插件flutter_mobile_upgrader的使用
安装
- 在
pubspec.yaml
中添加插件依赖:
dependencies:
flutter_mobile_upgrader: ^1.0.7
- 在命令行中运行以下命令以获取依赖:
flutter pub get
使用
Android
- 在
android/app/src/main/AndroidManifest.xml
中添加provider
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxxx.xxxxx"
>
<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:grantUriPermissions="true"
android:exported="false"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"
/>
</provider>
</application>
</manifest>
- 新增
android/app/src/main/res/xml/file_paths.xml
文件:
<paths>
<external-path
name="external-path"
path="."
/>
<external-cache-path
name="external-cache-path"
path="."
/>
<external-files-path
name="external-files-path"
path="."
/>
<files-path
name="files_path"
path="."
/>
<cache-path
name="cache-path"
path="."
/>
<root-path
name="name"
path="."
/>
</paths>
- 点击升级前往应用商店:
// 一般通过远程接口调用获取
final Future<AppUpgradeInfo> appUpgradeInfo = Future.value(
AppUpgradeInfo(
title: '更新提示',
contents: ['有新版本哟,请更新~', '修复了设备定位bug', '优化认证操作体验'],
force: true, // 是否强制升级
),
);
// 获取已上架的应用市场, 根据应用包名,例如: 'com.flutter.app'
final appMarketInfos = AppMarketManager.getAppMarketList(
await FlutterUpgradeChanneler.getInstallMarket(['com.flutter.app']),
);
// 升级应用 API
AppUpgradeManager.upgrade(
context, // BuildContext
appUpgradeInfo,
appMarketInfo: appMarketInfos[0],
onCancel: () {},
onOk: () {},
);
- 从指定的 URL 下载 APK:
// 一般通过远程接口调用获取
final Future<AppUpgradeInfo> appUpgradeInfo = Future.value(
AppUpgradeInfo(
title: '更新提示',
contents: ['有新版本哟,请更新~', '修复了设备定位bug', '优化认证操作体验'],
force: true, // 是否强制升级
),
);
// 升级应用 API
AppUpgradeManager.upgrade(
context, // BuildContext
appUpgradeInfo,
apkDownloadUrl: 'http://xxx.xxx.com/upgrade.apk',
onCancel: () {},
onOk: () {},
);
iOS
- 点击升级前往应用商店:
// 一般通过远程接口调用获取
final Future<AppUpgradeInfo> appUpgradeInfo = Future.value(
AppUpgradeInfo(
title: '更新提示',
contents: ['有新版本哟,请更新~', '修复了设备定位bug', '优化认证操作体验'],
force: true, // 是否强制升级
),
);
// 升级应用 API
AppUpgradeManager.upgrade(
context, // BuildContext
appUpgradeInfo,
iosAppId: 'xxxxxxxx', // iOS App ID
onCancel: () {},
onOk: () {},
);
示例代码
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_mobile_upgrader/flutter_mobile_upgrader.dart';
void main() {
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter Upgrader Plugin'),
),
body: Padding(
padding: const EdgeInsets.only(top: 28.0),
child: Row(
children: [
Expanded(
child: ElevatedButton(
style: ElevatedButtonTheme.of(context).style,
child: const Padding(
padding: EdgeInsets.all(12.0),
child: Text(
'升 级',
style: TextStyle(fontSize: 18),
),
),
onPressed: () {
final Future<AppUpgradeInfo> appUpgradeInfo = Future.value(
AppUpgradeInfo(
title: '更新提示',
contents: ['有新版本哟,请更新~'],
force: false,
apkDownloadUrl: ''),
);
if (Platform.isAndroid) {
AppUpgradeManager.upgrade(
context,
appUpgradeInfo,
);
}
if (Platform.isIOS) {
AppUpgradeManager.upgrade(
context,
appUpgradeInfo,
iosAppId: 'idxxxxxx',
);
}
},
),
),
],
),
),
),
);
}
}
更多关于Flutter应用版本升级插件flutter_mobile_upgrader的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter应用版本升级插件flutter_mobile_upgrader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_mobile_upgrader
是一个用于 Flutter 应用的版本升级插件,它可以帮助开发者轻松实现应用的版本检查和升级功能。通过该插件,开发者可以检查应用是否有新版本,并引导用户前往应用商店或下载页进行更新。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 flutter_mobile_upgrader
依赖:
dependencies:
flutter:
sdk: flutter
flutter_mobile_upgrader: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
2. 基本用法
2.1 初始化插件
在 main.dart
中初始化插件:
import 'package:flutter/material.dart';
import 'package:flutter_mobile_upgrader/flutter_mobile_upgrader.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
await FlutterMobileUpgrader.init(
appId: 'your_app_id', // 你的应用ID(通常是应用的包名)
storeUrl: 'https://play.google.com/store/apps/details?id=your_app_id', // 应用商店链接
);
runApp(MyApp());
}
2.2 检查更新
在应用中的某个页面或逻辑中,你可以调用 checkForUpdate
方法来检查是否有新版本:
import 'package:flutter/material.dart';
import 'package:flutter_mobile_upgrader/flutter_mobile_upgrader.dart';
class HomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 检查更新
bool hasUpdate = await FlutterMobileUpgrader.checkForUpdate();
if (hasUpdate) {
// 如果有更新,导航到升级页面
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UpdatePage(),
),
);
} else {
// 没有更新
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Your app is up to date!')),
);
}
},
child: Text('Check for Update'),
),
),
);
}
}
2.3 升级页面
你可以创建一个单独的页面来展示更新信息,并允许用户进行升级:
import 'package:flutter/material.dart';
import 'package:flutter_mobile_upgrader/flutter_mobile_upgrader.dart';
class UpdatePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Update Available'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('A new version of the app is available.'),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 跳转到应用商店进行升级
await FlutterMobileUpgrader.upgradeApp();
},
child: Text('Upgrade Now'),
),
],
),
),
);
}
}