- IOS平台,应用程序升级功能只能通过跳转到app store进行升级。
- Android平台,既可以通过跳转到应用市场进行升级,也可以下载apk包升级。
- 强制升级:就是用户必须升级才能继续使用App,如果不是非常必要不建议使用如此强硬的方式,会造成用户的反感。
- 非强制升级就是允许用户点击“取消”,继续使用App。
- 通常我们会访问后台接口获取是否有新的版本,如果有新的版本则弹出提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个“升级”的按钮,否则提供用户“升级”和“取消”按钮。
- 弹出提示框后用户选择是否升级,如果选择“取消”,提示框消失,如果选择“升级”,跳转到app store进行升级。
- 访问后台接口获取是否有新的版本,这里和IOS是一样的,有则弹出升级提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个“升级”的按钮,否则提供用户“升级”和“取消”按钮。
- 弹出提示框后有用户选择是否升级,如果选择“取消”,提示框消失,如果选择“升级”,判断是跳转到应用市场进行升级还是通过下载apk升级。
- 如果下载apk升级,则开始下载apk,下载完成后跳转到apk安装引导界面。
- 如果跳转到应用市场升级,判断是否指定了应用市场,比如只在华为应用市场上架了,那么此时需要指定跳转到华为应用市场,即使你在很多应用市场都上架了,也应该根据用户手机安装的应用市场指定一个应用市场,让用户选择应用市场不是一个好的体验,而且用户也不知道应该去哪个市场更新,如果用户选择了一个你没有上架的应用市场,那就更尴尬了。
- 指定应用市场后直接跳转到指定的应用市场的更新界面。
@override
void initState() {
AppUpgrade.appUpgrade(
context,_checkAppInfo(),iosAppId: 'id88888888',);
super.initState();
}
Future<AppUpgradeInfo> _checkAppInfo() {
return Future.value(AppUpgradeInfo(
title: '新版本V1.1.1',contents: [
'1、支持立体声蓝牙耳机,同时改善配对性能','2、提供屏幕虚拟键盘','3、更简洁更流畅,使用起来更快','4、修复一些软件在使用时自动退出bug','5、新增加了分类查看功能'
],apkDownloadUrl: '',force: false,));
await FlutterUpgrade.appInfo
- versionName:版本号,比如1.0.0。
- versionCode:Android独有版本号,对应Android build.gradle中的versionCode,ios返回“0”。
- packageName:包名,对应Android build.gradle中的applicationId,ios的BundleIdentifier。
iOS平台升级
Android平台下载apk
Android平台跳转应用市场
_getInstallMarket() async {
List<String> marketList = await FlutterUpgrade.getInstallMarket();
}
_getInstallMarket() async {
List<String> marketList = await FlutterUpgrade.getInstallMarket(marketPackageNames: ['google play 包名']);
}
AppMarketInfo _marketInfo = AppMarket.getBuildInMarket(packageName);
AppUpgrade.appUpgrade(
context,appMarketInfo: AppMarket.huaWei
);
AppUpgrade.appUpgrade(
context,appMarketInfo: AppMarketInfo(
'应用市场名称(选填)','应用市场包名','应用市场类名'
),);
AppUpgrade.appUpgrade(context,titleStyle: TextStyle(fontSize: 30),contentStyle: TextStyle(fontSize: 18),...
)
AppUpgrade.appUpgrade(context,cancelText: '以后再说',cancelTextStyle: TextStyle(color: Colors.grey),okText: '马上升级',okTextStyle: TextStyle(color: Colors.red),...
)
AppUpgrade.appUpgrade(context,okBackgroundColors: [Colors.blue,Colors.lightBlue],...
)
AppUpgrade.appUpgrade(context,progressBarColor: Colors.lightBlue.withOpacity(.4),...
)
AppUpgrade.appUpgrade(context,borderRadius: 15,...
)