强大的Flutter App升级功能

编程之家收集整理的这篇文章主要介绍了强大的Flutter App升级功能编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 应用程序升级功能是App的基础功能之一,如果没有此功能会造

注意:无特殊说明,Flutter版本及Dart版本如下:

  • Flutter版本: 1.12.13+hotfix.5
  • Dart版本: 2.7.0

应用程序升级功能是App的基础功能之一,如果没有此功能会造成用户无法升级,应用程序的BUG或者新功能用户无法触达,甚至损失这部分用户

对于应用程序升级功能的重要性就无需赘言了,下面介绍下应用程序升级功能的几种方式,从平台方面来说:

从强制性来说可以分别强制升级和非强制升级

下面分别介绍IOS和AndroID升级流程。

IOS升级流程

IOS升级流程如下:

流程说明:

  1. 通常我们会访问后台接口获取是否有新的版本,如果有新的版本则弹出提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个升级”的按钮,否则提供用户升级”和“取消”按钮
  2. 弹出提示框用户选择是否升级,如果选择“取消”,提示框消失,如果选择升级”,跳转到app store进行升级

AndroID 升级流程

相比ios的升级过程,AndroID就稍显复杂了,流程图如下:

流程说明:

  1. 访问后台接口获取是否有新的版本,这里和IOS是一样的,有则弹出升级提示框,判断当前版本是否为“强制升级”,如果是则只提供用户一个升级”的按钮,否则提供用户升级”和“取消”按钮
  2. 弹出提示框后有用户选择是否升级,如果选择“取消”,提示框消失,如果选择升级”,判断是跳转到应用市场进行升级还是通过下载apk升级
  3. 如果下载apk升级,则开始下载apk,下载完成后跳转到apk安装引导界面。
  4. 如果跳转到应用市场升级,判断是否指定了应用市场,比如只在华为应用市场上架了,那么此时需要指定跳转到华为应用市场,即使你在很多应用市场都上架了,也应该根据用户手机安装的应用市场指定一个应用市场,让用户选择应用市场不是一个好的体验,而且用户也不知道应该去哪个市场更新,如果用户选择一个你没有上架的应用市场,那就更尴尬了。
  5. 指定应用市场后直接跳转到指定的应用市场的更新界面。

介绍完了升级流程,主角终于出场了。

App升级功能使用介绍

只需在主页的initState方法调用升级检测方法

@overrIDe
  voID initState() {
    AppUpgrade.appUpgrade(
      context,_checkAppInfo(),iosAppID: 'ID88888888',);
    super.initState();
  }

_checkAppInfo方法访问后台接口获取是否有新的版本的信息,返回Future<AppUpgradeInfo> 类型,AppUpgradeInfo包含Title升级内容、apk下载url、是否强制升级等版本信息。

iosAppID参数用于跳转到app store。

_checkAppInfo()方法通常是访问后台接口,这里直接返回新版本信息,代码如下:

Future<AppUpgradeInfo> _checkAppInfo() {
  return Future.value(AppUpgradeInfo(
    Title: '新版本V1.1.1',contents: [
      '1、支持立体声蓝牙耳机,同时改善配对性能','2、提供屏幕虚拟键盘','3、更简洁更流畅,使用起来更快','4、修复一些软件使用自动退出BUG','5、新增加分类查看功能'
    ],apkDownloadUrl: '',force: false,));

好了,基本的升级功能就完成了,弹出提示框效果如下:

点击“以后再说”,提示框消失,点击“立即体验”,自动区分不同平台。

访问后台接口获取新版本的信息一般需要当前App的包名和版本,查询方法如下:

await FlutterUpgrade.appInfo

返回的类型是AppInfo

  • versionname:版本号,比如1.0.0。
  • versionCode:AndroID独有版本号,对应AndroID build.gradle中的versionCode,ios返回“0”。
  • packagename:包名,对应AndroID build.gradle中的applicationID,ios的BundleIDentifIEr。

iOS平台升级

iOS平台直接跳转到app store相关页面iosAppID一定要设置对,否则app store会找不到应用程序。

AndroID平台下载apk

AndroID平台则会判断是否设置了apk下载url,如果设置了则下载apk则直接下载效果如下:

下载完成时直接跳转到apk安装引导界面,效果如下:

用户点击允许,出现如下界面:

点击继续安装即可,上面的安装引导界面是系统界面,不同的手机或者不同的AndroID版本会略有不同。

AndroID平台跳转应用市场

如果不提供apk下载地址,点击“立即体验”,则会跳转到应用市场,不指定应用市场则会弹出提示框,让用户选择应用市场,效果如下:

@H_301_171@

提示框内将会包含手机安装的所有的应用市场,用户选择一个然后跳转到对应应用市场的详情界面,如果当前应用未在此市场上架则会出现“找不到的界面”。

通常情况下会指定应用市场,这就需要知道用户手机安装的应用市场,查询方法如下:

_getInstallMarket() async {
  List<String> marketList = await FlutterUpgrade.getInstallMarket();
}

插件内置了国内常用的应用市场,包括小米、魅族、vivo、oppo、华为、zte、360助手、应用宝、pp助手、豌豆荚,如果你需要检测其他的应用市场,比如Google play,只需添加googl play的包名即可

_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(
    '应用市场名称(选填)','应用市场包名','应用市场类名'
  ),);

提示框样式定制

如果认的升级提示框不满足你的需求,那么你可以定制你的升级提示框

Title升级内容文字样式设置

AppUpgrade.appUpgrade(context,TitleStyle: TextStyle(FontSize: 30),contentStyle: TextStyle(FontSize: 18),...
)

通过TitleStylecontentStyle设置样式,可以设置字体大小、颜色、粗体等。

设置“取消”和“升级按钮”文本和样式

AppUpgrade.appUpgrade(context,cancelText: '以后再说',cancelTextStyle: TextStyle(color: colors.grey),okText: '马上升级',okTextStyle: TextStyle(color: colors.red),...
)

认“取消”按钮文本是"以后再说",认“升级按钮的文本是“立即体验”。

设置升级按钮的背景颜色,需要2种颜色,2种颜色左到右线性渐变,如果想设置纯色,只需将2种颜色设置为同一个颜色即可认颜色是系统primarycolor:

AppUpgrade.appUpgrade(context,okBackgroundcolors: [colors.blue,colors.lightBlue],...
)

设置进度条的颜色:

AppUpgrade.appUpgrade(context,progressbarcolor: colors.lightBlue.withOpacity(.4),...
)

设置升级提示框圆角半径,认是20:

AppUpgrade.appUpgrade(context,borderRadius: 15,...
)

Github:https://github.com/781238222/flutter-do/tree/master/flutter_app_upgrade

交流

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。

同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容

Flutter地址http://laomengit.com 里面包含160多个组件的详细用法

总结

以上是编程之家为你收集整理的强大的Flutter App升级功能全部内容,希望文章能够帮你解决强大的Flutter App升级功能所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Flutter文章

1.ListView的简单介绍 ListView是最常用的可以滚动组件之一, 它可以沿一个方向进行线性排列所有的子组件。 下面是ListView的属性值介绍: scrollDirection:列表的滚
在Android上运行OpenGL ES程序需要用到GLSurfaceView控件,GLSurfaceView继承自SurfaceView并实现了GLThread,通过OpenGL ES进行绘制。 O
经过半年的准备OpenGL ES for Android系列文章终于要和大家见面了,在这里定一个小目标-先吸引1000个粉丝,万一实现了呢。写关于OpenGL ES的文章开始是有一些犹豫的,因为Ope
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 应用程序升级功能是App的基础功能之一,如果没有此功能会造
在Flutter默认创建的项目中可以使用系统Material图标,在 文件中使用图标设置如下: 系统图标如下: 如果这里面没有我们想要的图标如何处理呢?这时可以使用第三方图标库,下面以 &quot;阿
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 showDialog showDialog 用于弹出Mat
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 MaterialApp 在学习Flutter的过程中我们第
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注