上海新闻综合频道直播:强大的Flutter App升级功能

2021-11-28 194 views 5

扫一扫用手机浏览

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

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

{应}用程序『『{‘“升”‘级’’}』』功能是App‘的’基础功能之一,如果没有此功能会造成《用户无法『『{‘“升”‘级’’}』』》,应用程序‘的’bug或者新功能老用户无法触达,(甚至损失这部分)用户。

对于应用程序『『{‘“升”‘级’’}』』功能【‘的’重要性】就无需赘言 了[,下面介绍下应用程序『『{‘“升”‘级’’}』』功能‘的’几种方式,〖从 平台[方面来〗说:

  • IOS 平台[,『应』用程序『『{‘“升”‘级’’}』』功能只能通过『跳转到』app store『进行』『『{‘“升”‘级’’}』』。
  • Android 平台[,既可以通过『跳转到』「应{用市}场」『进行』『『{‘“升”‘级’’}』』,也可以“下载”apk<包『『{‘“升”‘级’’}』』>。

《从》强制性来说可以分别《‘强制升’‘级’「<(和)>」非》‘强制升’‘级’:

  • ‘强制升’‘级’:就是用户必须『『{‘“升”‘级’’}』』才能继续使用App,如果不是非常必要不建议使用如此强硬‘的’方式,《会造成用》户‘的’反感。
  • 非‘强制升’‘级’就是允许用户点击“《“《取消》”》”,继续使用App。

下面分别介绍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“下载”地址,点击“『「立即体验」』”,则会『跳转到』「应{用市}场」,不指定「应{用市}场」则会弹出提示框,让用户选择「应{用市}场」,(“效”果如下):

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

通常情况下会指定「应{用市}场」,这就(需要)知道用户手机内安装‘的’「应{用市}场」,查询方法如下:

_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,
  _checkAppInfo(),
  iosAppId: 'id88888888',
  appMarketInfo: AppMarket.huaWei
);

指定没有内置‘的’「应{用市}场」方法如下:

AppUpgrade.appUpgrade(
  context,
  _checkAppInfo(),
  iosAppId: 'id88888888',
  appMarketInfo: AppMarketInfo(
    '「应{用市}场」名称(选填)','「应{用市}场」【包名】','「应{用市}场」类名'
  ),
);

‘提示框样’式定制

如果默认‘的’『『{‘“升”‘级’’}』』提示框不满足你‘的’需求,那么你可以定制你‘的’『『{‘“升”‘级’’}』』提示框。

title及『『{‘“升”‘级’’}』』内容文字样式设置:

AppUpgrade.appUpgrade(context, _checkAppInfo(),
    titleStyle: TextStyle(fontSize: 30),
    contentStyle: TextStyle(fontSize: 18),
    ...
)

通过titleStyle「<(和)>」contentStyle「设置」其样式,可以设置字体大小、颜色、粗体等。

设置“《“《取消》”》”「<(和)>」“『『{‘“升”‘级’’}』』<“按钮”>”文本「<(和)>」样式:

AppUpgrade.appUpgrade(context, _checkAppInfo(),
    cancelText: '【以后再】说',
    cancelTextStyle: TextStyle(color: Colors.grey),
    okText: '马 上[『『{‘“升”‘级’’}』』',
    okTextStyle: TextStyle(color: Colors.red),
    ...
)

默认“《“《取消》”》”<“按钮”>文本是"【以后再】说",默认“『『{‘“升”‘级’’}』』”<“按钮”>‘的’文本是“『「立即体验」』”。

设置“『『{‘“升”‘级’’}』』”<“按钮”>‘的’背景颜色,(需要)2种颜色,2种颜色左到右线性渐变,「如果想设置纯色」,【只需将】2种颜色设置为同一【个】颜色即可,默认颜色是系统‘的’primaryColor:

AppUpgrade.appUpgrade(context, _checkAppInfo(),
    okBackgroundColors: [Colors.blue, Colors.lightBlue],
    ...
)

设置进度条‘的’颜色:

AppUpgrade.appUpgrade(context, _checkAppInfo(),
    progressBarColor: Colors.lightBlue.withOpacity(.4),
    ...
)

设置『『{‘“升”‘级’’}』』提示框‘的’圆角(半径),<默认是>20:

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

由于环境‘的’原因,《目前源代码还无法》发布到github及pub 上[, 后续会开源[,当然也可以关注我‘的’公众号,『回复』“flutter 『『{‘“升”‘级’’}』』”《即可》获得源代码。

欢迎加入Flutter‘的’「微信」交流群(「微信」:laomengit),一起学习,一起进步,生活不止眼前‘的’苟且,还有诗「<(和)>」《远方》。

非常希望您关注我【个】人‘的’公众号,里面有各种福利等着大家哦。

,

sunbet

Sunbet www.9cx.net致力于打造申博娱乐 平台[,门下‘的’申博打造拥有最“让消费者”更安心体验环境!Sunbet一【个】让您宾至如归‘的’老「牌网站」!

Allbet网站内容转载自互联网,如有侵权,联系www.ALLbetgame.us删除。

本文链接地址:http://www.lijiweihejin.com/post/942.html

相关文章

发表评论

  • 欧博开户欢迎进入欧博开户(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。为你开的流量

    2020-10-16 00:00:03 回复该评论
  • USDT充值接口菜包钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台。免费提供Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜包Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。飘过~

    2021-04-03 00:00:57 回复该评论
  • 晋级啦喂~ iOS 13 正式版释出,重温全新功用!好久没来了,再踩踩

    2021-10-24 00:08:50 回复该评论
  • 欢迎进入欧博开户(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。大家多多评论呀

    2021-11-21 00:04:16 回复该评论
  • 新2平台出租rent.22223388.com

    皇冠运营平台(rent.22223388.com)是皇冠(正网)接入菜宝钱包的TRC20-USDT支付系统,为皇冠代理提供专业的网上运营管理系统。系统实现注册、充值、提现、客服等全自动化功能。采用的USDT匿名支付、阅后即焚的IM客服系统,让皇冠代理的运营更轻松更安全。

    勇敢写自己

    2021-11-28 00:02:09 回复该评论