App版本检测及自动升级功能的代码开发

PS1:本教程主要针对使用APICloud技术进行App应用开发的技术人员

PS2:考虑到代码的兼容性,本教程代码使用ES5方式编写,最新的大部分手机的浏览器内核已支持ES6代码,不考虑兼容性的话,也可以尝试使用ES6+的代码风格去编写

1 使用场景

App的版本代码管理由2种方式,一种为自动、一种为手动

  • 自动方式:将版本管理交由APICloud引擎进行自动处理,自动实现App的自动版本检测、提示及自动更新等功能
    • 优点:简单、快捷,无需开发人员编写任何代码;
    • 缺点:代码业务逻辑已固定,不支持扩展,无法修改相关样式及执行逻辑;
  • 手动方式:由开发人员自定编写代码,去实现App版本的检查、提示、更新等逻辑
    • 优点:支持自定义开发,逻辑灵活,开发人员可定制弹窗样式和交互逻辑;
    • 缺点:所有逻辑的代码均需要开发人员自定编写完成,有一定的工作量;

本教程主要介绍开发者如何在手动方式下,完成App版本管理的相关功能开发

2 开发流程

2.1 配置激活版本管理的自动方式

修改根目录下的config.xml文件,将其中的<preference name="autoUpdate" value="false" />中的vallue参数值由false修改为true,即
<preference name="autoUpdate" value="true" />

在这里插入图片描述

2.2 相关代码

/**
 * 检查版本升级
 */
function checkUpdate() {
    
    
	var mam = api.require('mam');
	// 最新版本检测
	mam.checkUpdate(function (ret, err) {
    
    
		var result = ret.result;
		if (result && result.update) {
    
    
			// 拼接弹窗的提示信息
			var titleMsg = '发现新版本[' + result.version + ']';
			var content = result.updateTip;
			var cancelBtn = '暂不升级';
			if (result.closed) {
    
    
				cancelBtn = '放弃退出';
			}
			if (ret.versionDes) {
    
    
				content += '\n' + ret.versionDes;
			}
			// 弹出弹窗对话框
			api.confirm(
				{
    
    
					title: titleMsg,
					msg: content,
					buttons: ['立即升级', cancelBtn]
				},
				function (ret, err) {
    
    
					if (ret.buttonIndex == 1) {
    
    
						updateApp(result.source);
					} else if (result.closed) {
    
    
            // 强制关闭的应用,取消直接退出
            api.closeWidget({
    
     silent: true });
          }
				}
			);
			return;
		}
		// 强制关闭版本的弹窗提示
		if (result && result.closed) {
    
    
			// 无更新,版本强制关闭
			api.alert(
				{
    
    
					title: '版本关闭提示',
					msg: '很抱歉,当前版本已关闭,程序将自动退出'
				},
				function (ret, err) {
    
    
					api.closeWidget({
    
     silent: true });
				}
			);
		}
	});
}

代码说明:本代码仅做示范示例,开发者可根据自己的业务逻辑需求,自定进行相关代码的修改优化(例如自定义一个更漂亮的提示弹窗)

代码内涉及的API命令的前置介绍:

  • api.require: APICloud引擎内置api,用于加载原生的APICloud模块

  • api.confirm:APICloud引擎内置api,弹出具有2个交互按钮的模态对话框

    在这里插入图片描述

  • api.alert: APICloud引擎内置api,弹出具有1个按钮的模态对话框,功能类似原生web下的window.alert

在这里插入图片描述

    • api.closeWidget: APICloud引擎内置api,关闭app

      在这里插入图片描述

3 云端发布版本的操作说明:

3.1 登录APICloud云端控制台,编制新版本

在这里插入图片描述

2. 获取新版本的下载地址

在这里插入图片描述

3. 填写配置预发布更新版本的更新信息

在这里插入图片描述

4. 推送强制版本更新的操作说明

在发布新版本的同时,将之前的历史版本关闭,即可强制使用该历史版本的用户更急到最新版本,否则app将无法继续使用

在这里插入图片描述

4 App更新页面样式展示

4.1 有更新(不强制升级)

在这里插入图片描述

4.2 有更新(强制升级)

在这里插入图片描述

4.3 无更新(关闭版本)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SMDOUSM/article/details/124018309