概述

本文主要从以下几点总结下小程序(小游戏)的更新机制:

  1. 必要字段
  2. 自动更新逻辑
  3. 旧版本的清理
  4. 优化

本文后面阐述统一用“小程序”替代“小程序或小游戏”

必要字段

  1. 最小可使用的版本
    小程序并不一定会去兼容所有的老版本。有些情况下,老版本会直接无法运行,小程序会期望用户必须更新到某个版本。

这里笔者也考虑过使用使用一个字段来表明“是否要强制更新”。但是考虑后发现很有问题,比如有ABC三个版本,B设置“强制更新”,C设置“非强制更新”,这样一旦出现A->C的情况就有问题了。B设置“强制更新”是表明A之前的版本都不兼容了,但是一旦C版本出来后,由于C设置的“非强制更新”,那么A之前的版本又会可以兼容。

  1. 目前使用的版本
    同一时间,可能会存在多个版本。如果用户在正在运行游戏的同时,期望去清理文件,或者下载新版游戏,那么这个参数是必要的。一方面可以保证这个资源的文件不会被清理,另一方面可以保证访问的都是这个版本下的资源,而不会去访问其他版本的资源。

自动更新逻辑

这个做法主要还是为了减少用户的等待时间,提高用户的体验。
主要需要实现以下几点逻辑:

  1. 在启动时候判断下存在的旧版本是否大于最小支持的版本,如果可用,那么就直接使用旧版本启动。如果不可用或者不存在旧版本,那么就直接下载新版本后再启动。
    在确认启动之后,后台去确认下是否是最新版本,如果不是最新版本,那么要后台下载最新版本。
    这里要注意:需要记录此时的版本,避免程序进行时去访问多个不同版本的资源。
  2. 在进入小程序列表或者启动应用的时候,检查一下用户已经使用过的程序,后台将这些程序更新到最新的版本。(由于用户已经使用过,说明很可能会再使用)

旧版本的清理

笔者考虑了三个时机:

  1. 进入小程序列表或者启动应用的时候,check下已经下载的游戏是否小于游戏最小支持的版本,如果小于,那么就直接清理掉。
  2. 新版本的游戏下载更新结束之后,判断下是否正在游戏中,如果正在游戏中,说明有可能用户正在玩老版本,因此不能删除。如果不在游戏中,可以直接删除无用的老版本。
  3. 每局游戏结束后,check下硬盘中的游戏,如果存在多个版本的游戏的话,仅保留最新的那个。(这个对应的场景:玩旧版本游戏时,同时下载新游戏)

优化

启动优化

为了保证资源的准确性,开着这可能每次启动的时候都会去check一下目录,那么最好将启动改成异步触发。
随着用户的使用,目录中的文件会越来越多,那么check的速度就会越来越慢,如果不放到子线程去调用,后面完全可能会造成卡死。

如果启动的时候不去check,这点完全可以不用考虑。但是在android手机上,可能存在“用户主动删除目录文件”等情况。这样的场景下会导致缓存与实际情况不同步,就会有异常。(直接针对这种异常做个处理也是一种解决方式)

流量优化

自动更新的逻辑可以考虑下“wifi与流量”的因素,在用户处于流量的情况下时不要去自动更新。否则长时间自动更新用户可能不玩的游戏,会消耗用户大量的流量,很有可能会让用户删除app。

小程序小游戏更新机制总结相关推荐

  1. 微信小程序运行及更新机制

    微信小程序运行及更新机制 1.微信小程序运行机制 1.1 前台和后台 1.2 小程序启动:冷启动和热启动 1.3 小程序销毁 2.微信小程序更新机制 2.1 启动时同步更新 定期检查发现版本更新 用户 ...

  2. 微信小程序启动、更新机制

    小程序启动 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」. 热启动:假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过 ...

  3. 微信小程序自动检测更新新版本

    app.js设置 App({onShow(){this.autoUpdate() //更新新版本},autoUpdate() { //更新新版本var self = this// 获取小程序更新机制兼 ...

  4. 【无标题】微信小程序:强制更新(测试编译)

    如图,当小程序发布新的版本后,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会弹出这个提示,提醒用户更新新的版本.用户点击确定就可以自动重启更新,点击取消则关闭弹窗,不再更新. ...

  5. 如何刷新微信服务器小程序版本,微信小程序版本自动更新

    最近在做一个小程序每次更新版本之后都需要删除小程序,再次扫码进入才可以看到新版本,接下来吾爱编程为大家介绍一下微信小程序版本自动更新的方法,有需要的小伙伴可以参考一下: 1.启动机制: (1).热启动 ...

  6. 合成大西瓜小程序小游戏源码

    ​ 近日,一款名为[合成大西瓜]的休闲小游戏火爆社交圈.[合成大西瓜]因其玩法简单.充满魔性而频登微博热搜,游戏开发商微伞小游戏在昨日顺势上线了"合成大西瓜"APP. 起初,大家对 ...

  7. 微信小程序(小游戏)的示例

    在这里给大家介绍微信小程序(小游戏)的示例. 1. 首先当然是需要下载官方开发工具. 2. 接着我们需要创建一个项目 在这里需要需要点击体验小游戏.即可生成一个demo 3. 已结生成了项目,我们可以 ...

  8. 微信小程序(游戏)----拼图游戏(设计思路)

    微信小程序(游戏)----拼图游戏(设计思路) 设计思路 1.将一张海报等分成 N*N 的矩阵 方法一:利用两个组件循环完成,view组件和image组件,view组件作为盒子规定大小--超出部分不显 ...

  9. 微信小程序时间轴demo_微信小程序近期能力更新时间轴汇总

    微信小程序近期能力更新频繁,作为第三方服务商,延誉宝CMS近期的升级也非常频繁.我们简单回顾一下具体时间节点. 几个主要的时间轴如下 2020-07-08 H5 跳转小程序能力公测 为满足 H5 和小 ...

  10. 小程序头像上传成功但是小程序码没更新

    微信小程序头像上传了,但是小程序码没更新怎么处理? 如图: 小程序头像上传成功,但是小程序码没更新,是不是让你怀疑人生? 其实不用怀疑,退出登录,重新登录就行了 重新登录后,就可以刷新出新的小程序码图 ...

最新文章

  1. 【读书笔记】Lambda表达式
  2. 【怎样写代码】参数化类型 -- 泛型(六):泛型接口
  3. 微信JS-SDK开发:扫一扫接口功能实现
  4. 根据后续数组重建搜索二叉树
  5. STM32开发 -- 继电器测试
  6. C语言 | 编译与预处理指令(宏定义完整讲解:#define)
  7. AOP之PostSharp7-解决IOC 不能直接new问题,简化IOC开发和IOC对象LazyLoad
  8. Science论文解读:打牌一时爽,一直打牌一直爽
  9. 全面解析python类的绑定方法与非绑定方法(转载+自己的消化与理解)
  10. java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
  11. (04)System Verilog 利用函数通用总线激励驱动方法
  12. 2020年了,JavaScript依然是前端最受欢迎的语言吗?
  13. MySQL distinct多个字段
  14. BCB屏幕截图(抓图)程序-转
  15. pythondraw解释_科学网—Draw figures with Python - 高琳琳的博文
  16. swift获取图片像素颜色值
  17. 阶乘的计算java_java计算阶乘
  18. 数据结构(C语言版)之队列
  19. html消除表格线,html5 消除表格线
  20. AntD Pro Footer自定义

热门文章

  1. Linux中怎么删除空文件夹
  2. Git增量更新文件列表获取
  3. geoip mysql_使用geoIP数据库解析IP到城市jsonRPC服务教程
  4. 液位控制系统matlab仿真,智能控制及MATLAB实现—水箱液位模糊控制仿真设计
  5. Java抽象类和接口的详细区别(全)
  6. uploader什么意思_uploader
  7. 记录下服务器电源的功率计算
  8. 火车头作者谈网站的采集与防采集
  9. 0基础小白该如何学Python?这些方法你需要了解
  10. 简单的视频剪辑教程:使用win10自带的工具剪切和合并视频