强大的Flutter App升级功能

移动开发 作者: 2024-08-25 01:45:02
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 应用程序升级功能是App的基础功能之一,如果没有此功能会造
  • IOS平台,应用程序升级功能只能通过跳转到app store进行升级。
  • Android平台,既可以通过跳转到应用市场进行升级,也可以下载apk包升级。
  • 强制升级:就是用户必须升级才能继续使用App,如果不是非常必要不建议使用如此强硬的方式,会造成用户的反感。
  • 非强制升级就是允许用户点击“取消”,继续使用App。
  1. 通常我们会访问后台接口获取是否有新的版本,如果有新的版本则弹出提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个“升级”的按钮,否则提供用户“升级”和“取消”按钮。
  2. 弹出提示框后用户选择是否升级,如果选择“取消”,提示框消失,如果选择“升级”,跳转到app store进行升级。
  1. 访问后台接口获取是否有新的版本,这里和IOS是一样的,有则弹出升级提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个“升级”的按钮,否则提供用户“升级”和“取消”按钮。
  2. 弹出提示框后有用户选择是否升级,如果选择“取消”,提示框消失,如果选择“升级”,判断是跳转到应用市场进行升级还是通过下载apk升级。
  3. 如果下载apk升级,则开始下载apk,下载完成后跳转到apk安装引导界面。
  4. 如果跳转到应用市场升级,判断是否指定了应用市场,比如只在华为应用市场上架了,那么此时需要指定跳转到华为应用市场,即使你在很多应用市场都上架了,也应该根据用户手机安装的应用市场指定一个应用市场,让用户选择应用市场不是一个好的体验,而且用户也不知道应该去哪个市场更新,如果用户选择了一个你没有上架的应用市场,那就更尴尬了。
  5. 指定应用市场后直接跳转到指定的应用市场的更新界面。
@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,...
)
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68136.html