版本更新

概述

您可以使用APICloud 的版本更新服务,来向用户推送您App的新版本。版本更新服务只针对正式版APP,测试版无效。只能由低版本更新到高版本。

注意:使用版本更新功能需要添加mam模块。

参考视频

入门概念篇第七节(如何使用APICloud云端应用服务):http://docs.apicloud.com/APICloud/videos-and-codes

一、使用自动更新

1, config.xml 中配置

   <preference name="autoUpdate" value="true" />

2,登录APICloud官网,进入控制台,找到应用服务下的“版本”(图一),点击进入版本管理界面(图二),如图:

图一: 版本

图二: 版本

3,点击“更新APP版本”,选择版本并填写更新地址,更新备注,最后点击“更新”按钮。

版本

更新地址在云编译页面,点开编译记录,点击查看地址图标获取,如下图:

版本

4,打开手机上的APP,即可接收到新版本的推送。

二、使用API更新

也可使用mam模块更新,参考文档: http://docs.apicloud.com/%E7%AB%AFAPI/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%AF%B9%E6%8E%A5/mam

首先在项目代码config.xml中配置:

  <preference name="autoUpdate" value="false" />

示例代码:

  function checkUpdate() {
            var mam = api.require('mam');
            mam.checkUpdate(function(ret, err) {
                if (ret) {
                    var result = ret.result;
                    if (result.update == true && result.closed == false) {
                        var str = '新版本型号:' + result.version + ';更新提示语:' + result.updateTip + ';下载地址:' + result.source + ';发布时间:' + result.time;
                        api.confirm({
                            title : '有新的版本,是否下载并安装 ',
                            msg : str,
                            buttons : ['确定', '取消']
                        }, function(ret, err) {
                            if (ret.buttonIndex == 1) {
                                if (api.systemType == "android") {
                                    api.download({
                                        url : result.source,
                                        report : true
                                    }, function(ret, err) {
                                        if (ret && 0 == ret.state) {/* 下载进度 */
                                            api.toast({
                                                msg : "正在下载应用" + ret.percent + "%",
                                                duration : 2000
                                            });
                                        }
                                        if (ret && 1 == ret.state) {/* 下载完成 */
                                            var savePath = ret.savePath;
                                            api.installApp({
                                                appUri : savePath
                                            });
                                        }
                                    });
                                }
                                if (api.systemType == "ios") {
                                    api.installApp({
                                        appUri : result.source
                                    });
                                }
                            }
                        });
                    } else {
                        api.alert({
                            msg : "暂无更新"
                        });
                    }
                } else {
                    api.alert({
                        msg : err.msg
                    });
                }
            });
        }

三、强制更新:

  1. 进入控制台的“版本”管理界面
  2. 点击右上角的“更新APP版本”,发布新的app版本:选择要发布的版本,以1.0.0为例,输入一些版本描述,或者留空;app下载链接可以从“编译记录中复制”,也可以是存在自己服务器上的安装包地址
  3. 发布成功后,并且做推广一段时间后,你的用户手机上都装了1.0.0版本了
  4. 重复1、2操作,发布一个新的版本,比如2.0.0
  5. 此时,安装了1.0.0的用户,在启动app时,就会收到2.0.0版本的提示更新,ta可以选择不更新
  6. 关闭版本:在版本记录界面中,在1.0.0版本记录的最右侧,选择“关闭”,即将1.0.0版本关闭
  7. 此时,安装了1.0.0的用户,在启动app时,就会收到2.0.0版本的强制更新,必须更新才能继续使用
  8. 其他版本的强制更新以此类推。

四、强制关闭:

同强制更新逻辑一致,唯一不同的点:当你将版本管理中的所有版本均关闭后,用户在启动app时,就会收到强制关闭的提示了,即该app不再使用

强制更新和强制关闭的主要逻辑:当用户手机上当前安装的版本被关闭时,如果此时服务器上有比该版本更新的版本,则强制用户更新到最新版本;如果用户手机上当前安装的版本没有被关闭时,则提示更新,用户可以选择不更新;当服务器上所有版本都被关闭时,该应用被强制关闭,用户无法再使用。注:前置条件是手机联网了。