APP多版本并行更新方案

news2024/12/26 11:27:52

目录

  • App为什么要更新版本
  • 更新类型分析
  • 应该如何解决
  • 升级样式的收集
  • 表结构


App为什么要更新版本

任何一款APP都不可能完美,功能也不可能完善,需要不断迭代更新完善APP。例如:随着业务的不断发展而叠加的功能、产品发展到一定程度需要大改版提升用户体验、程序出现BUG、政策原因需要紧急关闭某些功能等等。这些场景都会成为APP更新版本的理由,更新的目的是为了更好的呈现一款更加合理、更加稳定、更加完善、体验更优的APP,而不是每次的升级给目标使用用户带来困扰和体验度降低问题。

更新类型分析

● 静默更新【考虑技术问题,此功能暂不实现,做为下一版的技术研究方向】

  1. 功能解释:静默更新是由手机悄悄的更新,一般用户在应用市场勾选了Wifi状态下,闲时自动更新功能,手机系统会按规则帮助用户自动更新APP,此功能和用户手动点击更新一样,只是由系统帮用户做了。
  2. 适用场景: 在APP发布新版后,并没有什么紧急或较紧急的诉求希望用户尽快更新APP的,都可以选择静默更新。

● 强更新

  1. 功能解释:强更新是指用户必须更新,否则不允许使用APP,非常的强制和粗暴。用户只能接受,否则无法使用。
  2. 适用场景:一般是系统重构,发生了数据迁移;或者大功能上线,替代了老功能;或者是严重BUG。总之,是牺牲用户体验,也要非升不可的场景才会用上。.

● 弱更新

  1. 功能解释:弱更新是指,在用户进入到APP后,弹窗提示用户升级版本,用户可以选择升,也可以不升正常用。也就是说,升不升用户说了算。是一种比较友好的用户体验,选择权交给了用户。
  2. 适用场景:不希望牺牲用户体验,但是又希望用户快点升级到新版本体验新的功能或者更佳的视觉、交互体验等场景(也方便产品经理收集上线后的用户数据,做功能分析),可以使用弱更新。值得一提的是,弹窗的频率不宜太高,一般1天1次即可,否则容易引起用户反感。【提醒次数和频率做成配置功能】

● 基于Bug修订版

  1. 功能解释:对于某一版的APP出现问题,且更新版本是非强制更新版。
  2. 适用场景:在不希望牺牲用的体验,又不想全部更新的时候,对于已经下载有bug的版本进行bug修订版提醒,对于其它版本可不提醒,即可做到只针对某一版进行更新,而不用全量更新。若之后发布强制更新版,则直接跳过Bug修订版,直接更新。

在这里插入图片描述

应该如何解决

● 非强制不提示更新:对于小变动,如样式的变动等可以不提示用户进行更新,而由自己手动进行更新。
● 非强制更新:对于新功能的增加再不对原有功能造成影响的前提下,选择提示更新,用户可以更新也可以不更新。
● 强制更新:对于核心功能的优化,若不更新则退出APP。
● 在后台提供同一个接口的多种版本的方案,使不同版本可以访问不同版本的接口。
● 采用数据表记录的功能,对于第次用户的更新进行记录,用来统计每一版本发行后更新的用户数量
● 对于当前单一的版本更新信息满足不了多版并行功能,后台采用表结构的功能来发布不同版本的信息。
● 对于用户不连贯使用,产生的版本更新漏洞,采用最低兼容版本号进行区别,若小于小低版本号,不管当前最新版本是否需要更新都将进行强制更新,以保证APP的正常逻辑处理。比如用户为1.0版本,1.1版本为强制更新,而1.2版本为最新版本不需要强制更新,在1.1到1.2期间,用户未打开过APP,再次打开时,不管1.2是否强制更新,中间有一版强制更新,则要求用户强制更新。

升级样式的收集

在这里插入图片描述

表结构

  • t_app_version
字段类型描述
idint自增主键
appTypeintapp对应编号(字典维护)
appVersionIntapp版本号
apiVersionint后台接口版本号:默认1.0.0
updateTypeint1:强制更新 2:提醒更新 3:可忽略更新
updateDescriptionint更新描述
urlintapp下载地址
versionTypeint版本类型
allowLowestVersionint允许最低版本(低于这个要强制更新)
createTimeint创建时间
createByint创建人
updateTimeint更新时间
updateByint更新人
isDelint是否被删除
  • t_app_version_info

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码解析】Redisson分布式限流器RRateLimiter源码分析

前面已经写了一篇Redisson的分布式限流的使用,Redisson分布式限流的简单实践,对其中的原理很好奇。 一、使用 // 1、 声明一个限流器 RRateLimiter rateLimiter redissonClient.getRateLimiter(key);// 2、 设置速率,5秒中产生3个令牌 rat…

如何把软件从C盘移到D盘?

​为什么要把软件从C盘移到D盘? C盘是安装操作系统的系统分区。虽然很多用户在安装系统的时候会给C盘分配了大量的磁盘空间,但是大多数用户会发现C盘很快就会无缘无故的被占满。这是为什么呢?这主要是由于大多数三方程序默认安装在C盘造成…

安科瑞5G智慧水务能效管理平台在九江环境治理中的应用

摘要:当下,以数字孪生为主的数字技术愈发成熟,为使得长江水环境治理能够“长治久安”,上海院在长江大保护先行先试城市九江城中水环境治理中启用了智慧水务先进理念,搭建了基于数字孪生技术的智慧水务平台。通过数字孪…

Vue 页面列表中部门类型根据层级缩进显示 ASCII 160

如上图, 部门类型都是一长溜, 没有根据级别进行缩进. 修改的时候尝试了在类型字段前面加了空格(ASCII-32), tab制表符(ASCII-09), 但是加载的时候都被去掉了,没有起作用. 然后就想这找个特殊空格试下,类似于CF中的空白用户名. 后来查了下ASCII码表发现还有挺多的, 不过经过测试…

U-boot常用命令(一)

信息查询命令 bdinfo,查看板子信息。 可以得到DRAM的起始地址和大小、启动参数保存起始地址、波特率、sp(堆栈指针)起始地址信息。 printenv输出环境变量信息,uboot 也支持 TAB 键自动补全功能,输入“print” 然后按…

STL-deque容器

双端数组,可以对头端进行插入删除操作 deque 容器和 vecotr 容器有很多相似之处,比如: deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可…

web自动化测试进阶篇01 ——— 策略模式的实践与技巧

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

【rust】| 02——语法基础_变量(不可变?)和常量

系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础_变量(不可变?)和常量 文章目录 1. 变量1.1 变量的定义1.2 试验变量的不可变特性 2. 常量2.1 常量的定义 3. 覆盖(同名变量)3.1 修改已定义变量的数据类型3.2 1…

第5章 负载均衡

第5章 负载均衡 5.1 proxy_pass详解 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。 假设下面四种情况分别用 http://192.…

深度学习与文本聚类:一篇全面的介绍与实践指南

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

vivado手写ROM改IP核

一、引言 手写了一个ROM,用于ADC或者DAC的寄存器配置。DAC出来的波形总是有两个对称的小肩膀,找不到原因。时序没有报错,但是有延迟。之前听同事说他们也遇到过这样的问题,是时序问题。所以,我也想试一下&#xff…

杂谈系列:唐高祖~开元通宝

唐高祖李渊(566年12月 -635年6月 ),字叔德。中国唐朝开国皇帝(618年6月18日-626年9月4日在位)。 作为唐朝开国的帝王,史学界对李渊的评价不一。有观点认为他优柔失断,赏罚…

源码级别讲解 redis 底层数据结构

redis 底层数据结构 Redis作为Key-Value存储系统,数据结构如下: Redis没有表的概念,Redis实例所对应的db以编号区分,db本身就是key的命名空间。 比如:user:1000作为key值,表示在user这个命名空间下id为10…

二叉树的层级遍历以及[NOIP2015 普及组] 扫雷游戏、有效时间的数目

一、二叉树的层级遍历 二叉树的层级遍历看着比其他遍历简单,但是我感觉实施起来却比其他遍历难,它主要是通过队列实现的 比如在这样的一颗二叉树中 我没先将a入队 队列:a 当a出队的时候就将它的左儿子和右儿子入队 队列&…

一图看懂 toml 模块:用于解析和创建TOML(Tom‘s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 toml 模块:用于解析和创建TOML(Tom’s Obvious, Minimal Language)的Python库, 资料整理笔记(大全)) ☘️摘要 全文介绍系统内置…

leap模型重点关注技术,如:能源结构清洁转型、重点领域如工业、交通节能减排降耗、新能源发电系统及发电成本最优化、区域碳达峰碳中和实现路径设计及政策评估

模型简介: 中文名:LEAP模型 外文名:Long Range Energy Alternatives Planning System/ Low emission analysis platform 采用部门分析法建立的LEAP模型(长期能源可替代规划模型)是一种自下而上的能源-环境核算工具&a…

Spark大数据处理讲课笔记3.8 Spark RDD典型案例

文章目录 零、本节学习目标一、利用RDD计算总分与平均分(一)提出任务(二)准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS (三)实现步骤1、打开RDD项目2、创建计算总…

FS2455高效率的同步降压DC-DC转换器5A输出电流

概述 FS2455是一种高效率的同步降压DC-DC转换器,具有5A输出电流。 FS2455在4.5V到30V的宽输入电压范围内工作, 集 成主开关和同步开关,具有非常低的RDS(ON)以最小化传导损失。 FS2455具有轻载时的应用和高效率。此外…

[GFCTF 2021]文件查看器(GZ、过滤器、phar) day4

打开界面直接一个登录界面&#xff0c;直接admin/admin登录进去 。 进来之后发现是一个文件查看器的功能 随便输入了点东西发现了报错&#xff0c;然后读取文件的功能&#xff0c;输入Files.classs.php发现读取不成功 换了个index.php <?phpfunction __autoload($classN…

无效的目标发行版: 11

背景&#xff1a;最近在研究es&#xff0c;想着弄一个连接es集群的springboot的工程&#xff0c;然后就在网上找到一个&#xff0c;结果弄到本地运行时&#xff0c;报错了“ 无效的目标发行版: 11 ” 看着报错就知道肯定是你导入的项目和你本地的JDK版本不匹配了&#xff0c;然…