用户登录
用户注册

分享至

小程序小游戏更新机制总结

  • 作者: 罐装的天才
  • 来源: 51数据库
  • 2021-08-31

概述

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

  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。

本文地址:http://www.51sjk.com/Upload/Articles/1/0/259/259764_20210701002256562.jpg

软件
前端设计
程序设计
Java相关