小程序小游戏更新机制总结
概述
本文主要从以下几点总结下小程序(小游戏)的更新机制:
- 必要字段
- 自动更新逻辑
- 旧版本的清理
- 优化
本文后面阐述统一用“小程序”替代“小程序或小游戏”
必要字段
- 最小可使用的版本
小程序并不一定会去兼容所有的老版本。有些情况下,老版本会直接无法运行,小程序会期望用户必须更新到某个版本。
这里笔者也考虑过使用使用一个字段来表明“是否要强制更新”。但是考虑后发现很有问题,比如有ABC三个版本,B设置“强制更新”,C设置“非强制更新”,这样一旦出现A->C的情况就有问题了。B设置“强制更新”是表明A之前的版本都不兼容了,但是一旦C版本出来后,由于C设置的“非强制更新”,那么A之前的版本又会可以兼容。
- 目前使用的版本
同一时间,可能会存在多个版本。如果用户在正在运行游戏的同时,期望去清理文件,或者下载新版游戏,那么这个参数是必要的。一方面可以保证这个资源的文件不会被清理,另一方面可以保证访问的都是这个版本下的资源,而不会去访问其他版本的资源。
自动更新逻辑
这个做法主要还是为了减少用户的等待时间,提高用户的体验。
主要需要实现以下几点逻辑:
- 在启动时候判断下存在的旧版本是否大于最小支持的版本,如果可用,那么就直接使用旧版本启动。如果不可用或者不存在旧版本,那么就直接下载新版本后再启动。
在确认启动之后,后台去确认下是否是最新版本,如果不是最新版本,那么要后台下载最新版本。
这里要注意:需要记录此时的版本,避免程序进行时去访问多个不同版本的资源。 - 在进入小程序列表或者启动应用的时候,检查一下用户已经使用过的程序,后台将这些程序更新到最新的版本。(由于用户已经使用过,说明很可能会再使用)
旧版本的清理
笔者考虑了三个时机:
- 进入小程序列表或者启动应用的时候,check下已经下载的游戏是否小于游戏最小支持的版本,如果小于,那么就直接清理掉。
- 新版本的游戏下载更新结束之后,判断下是否正在游戏中,如果正在游戏中,说明有可能用户正在玩老版本,因此不能删除。如果不在游戏中,可以直接删除无用的老版本。
- 每局游戏结束后,check下硬盘中的游戏,如果存在多个版本的游戏的话,仅保留最新的那个。(这个对应的场景:玩旧版本游戏时,同时下载新游戏)
优化
启动优化
为了保证资源的准确性,开着这可能每次启动的时候都会去check一下目录,那么最好将启动改成异步触发。
随着用户的使用,目录中的文件会越来越多,那么check的速度就会越来越慢,如果不放到子线程去调用,后面完全可能会造成卡死。
如果启动的时候不去check,这点完全可以不用考虑。但是在android手机上,可能存在“用户主动删除目录文件”等情况。这样的场景下会导致缓存与实际情况不同步,就会有异常。(直接针对这种异常做个处理也是一种解决方式)
流量优化
自动更新的逻辑可以考虑下“wifi与流量”的因素,在用户处于流量的情况下时不要去自动更新。否则长时间自动更新用户可能不玩的游戏,会消耗用户大量的流量,很有可能会让用户删除app。
小程序小游戏更新机制总结相关推荐
- 微信小程序运行及更新机制
微信小程序运行及更新机制 1.微信小程序运行机制 1.1 前台和后台 1.2 小程序启动:冷启动和热启动 1.3 小程序销毁 2.微信小程序更新机制 2.1 启动时同步更新 定期检查发现版本更新 用户 ...
- 微信小程序启动、更新机制
小程序启动 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」. 热启动:假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过 ...
- 微信小程序自动检测更新新版本
app.js设置 App({onShow(){this.autoUpdate() //更新新版本},autoUpdate() { //更新新版本var self = this// 获取小程序更新机制兼 ...
- 【无标题】微信小程序:强制更新(测试编译)
如图,当小程序发布新的版本后,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会弹出这个提示,提醒用户更新新的版本.用户点击确定就可以自动重启更新,点击取消则关闭弹窗,不再更新. ...
- 如何刷新微信服务器小程序版本,微信小程序版本自动更新
最近在做一个小程序每次更新版本之后都需要删除小程序,再次扫码进入才可以看到新版本,接下来吾爱编程为大家介绍一下微信小程序版本自动更新的方法,有需要的小伙伴可以参考一下: 1.启动机制: (1).热启动 ...
- 合成大西瓜小程序小游戏源码
近日,一款名为[合成大西瓜]的休闲小游戏火爆社交圈.[合成大西瓜]因其玩法简单.充满魔性而频登微博热搜,游戏开发商微伞小游戏在昨日顺势上线了"合成大西瓜"APP. 起初,大家对 ...
- 微信小程序(小游戏)的示例
在这里给大家介绍微信小程序(小游戏)的示例. 1. 首先当然是需要下载官方开发工具. 2. 接着我们需要创建一个项目 在这里需要需要点击体验小游戏.即可生成一个demo 3. 已结生成了项目,我们可以 ...
- 微信小程序(游戏)----拼图游戏(设计思路)
微信小程序(游戏)----拼图游戏(设计思路) 设计思路 1.将一张海报等分成 N*N 的矩阵 方法一:利用两个组件循环完成,view组件和image组件,view组件作为盒子规定大小--超出部分不显 ...
- 微信小程序时间轴demo_微信小程序近期能力更新时间轴汇总
微信小程序近期能力更新频繁,作为第三方服务商,延誉宝CMS近期的升级也非常频繁.我们简单回顾一下具体时间节点. 几个主要的时间轴如下 2020-07-08 H5 跳转小程序能力公测 为满足 H5 和小 ...
- 小程序头像上传成功但是小程序码没更新
微信小程序头像上传了,但是小程序码没更新怎么处理? 如图: 小程序头像上传成功,但是小程序码没更新,是不是让你怀疑人生? 其实不用怀疑,退出登录,重新登录就行了 重新登录后,就可以刷新出新的小程序码图 ...
最新文章
- 【读书笔记】Lambda表达式
- 【怎样写代码】参数化类型 -- 泛型(六):泛型接口
- 微信JS-SDK开发:扫一扫接口功能实现
- 根据后续数组重建搜索二叉树
- STM32开发 -- 继电器测试
- C语言 | 编译与预处理指令(宏定义完整讲解:#define)
- AOP之PostSharp7-解决IOC 不能直接new问题,简化IOC开发和IOC对象LazyLoad
- Science论文解读:打牌一时爽,一直打牌一直爽
- 全面解析python类的绑定方法与非绑定方法(转载+自己的消化与理解)
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- (04)System Verilog 利用函数通用总线激励驱动方法
- 2020年了,JavaScript依然是前端最受欢迎的语言吗?
- MySQL distinct多个字段
- BCB屏幕截图(抓图)程序-转
- pythondraw解释_科学网—Draw figures with Python - 高琳琳的博文
- swift获取图片像素颜色值
- 阶乘的计算java_java计算阶乘
- 数据结构(C语言版)之队列
- html消除表格线,html5 消除表格线
- AntD Pro Footer自定义