diff --git a/app.js b/app.js index 64011e0..a334726 100644 --- a/app.js +++ b/app.js @@ -3,22 +3,22 @@ const Http = require("./utils/HttpBasics"); const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} App({ data: {}, - onLaunch: function (options) { + onLaunch: function(options) { var that = this; that.globalData.sceneAddress = options.scene; /** - * 用户登录 + * 小程序版本更新 */ - that.userLogin(options.scene); + that.autoUpdate(); /** - * 小程序版本更新 + * 用户登录 */ - that.updateManager(); + that.userLogin(options.scene); }, /** * 用户登录 */ - userLogin: function (sceneAddress) { + userLogin: function(sceneAddress) { let that = this; // 登录 wx.login({ @@ -31,9 +31,9 @@ App({ sceneAddress: sceneAddress } Http.post({ - url: config.api.login, - data: usrdata - }) + url: config.api.login, + data: usrdata + }) .then(res => { if (res.data && res.data.score) { if (res.data.score != 0) { @@ -54,7 +54,7 @@ App({ title: '提示', showCancel: false, content: '登录失败,请重新尝试', - success: function (res) { + success: function(res) { if (res.cancel) { //点击取消,默认隐藏弹框 } else { @@ -69,54 +69,38 @@ App({ } }) }, - updateManager: function () { - /** - * 小程序版本更新 - */ + autoUpdate: function() { + let that = this; if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() - updateManager.onCheckForUpdate(function (res) { + // 1. 检查小程序是否有新版本发布 + updateManager.onCheckForUpdate(function(res) { // 请求完新版本信息的回调 if (res.hasUpdate) { - console.log('res.hasUpdate====') - updateManager.onUpdateReady(function () { - wx.showModal({ - title: '更新提示', - content: '新版本已经准备好,是否重启应用?', - success: function (res) { - console.log('success====', res) - // res: {errMsg: "showModal: ok", cancel: false, confirm: true} - if (res.confirm) { - // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 - updateManager.applyUpdate() - } else if (res.cancel) { - //如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 - wx.showModal({ - title: '温馨提示~', - content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', - success: function (res) { - self.autoUpdate() - return; - //第二次提示后,强制更新 - if (res.confirm) { - // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 - updateManager.applyUpdate() - } else if (res.cancel) { - //重新回到版本更新提示 - self.autoUpdate() - } + // 检测到新版本,需要更新,给出提示 + wx.showModal({ + title: '更新提示', + content: '检测到新版本,是否下载新版本并重启小程序?', + success: function (res) { + if (res.confirm) { + //2. 用户确定下载更新小程序,小程序下载及更新静默进行 + that.downLoadAndUpdate(updateManager) + } else if (res.cancel) { + //用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 + wx.showModal({ + title: '温馨提示~', + content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', + showCancel: false,//隐藏取消按钮 + confirmText: "确定更新",//只保留确定更新按钮 + success: function (res) { + if (res.confirm) { + //下载新版本,并重新应用 + that.downLoadAndUpdate(updateManager) } - }) - } + } + }) } - }) - }) - updateManager.onUpdateFailed(function () { - // 新的版本下载失败 - wx.showModal({ - title: '已经有新版本了哟~', - content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~' - }) + } }) } }) @@ -128,6 +112,26 @@ App({ }) } }, + /** + * 下载小程序新版本并重启应用 + */ + downLoadAndUpdate: function(updateManager) { + let that = this + wx.showLoading(); + //静默下载更新小程序新版本 + updateManager.onUpdateReady(function() { + wx.hideLoading() + //新的版本已经下载好,调用 applyUpdate 应用新版本并重启 + updateManager.applyUpdate() + }) + updateManager.onUpdateFailed(function() { + // 新的版本下载失败 + wx.showModal({ + title: '已经有新版本了哟~', + content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', + }) + }) + }, globalData: { scene: "", // token @@ -153,11 +157,11 @@ App({ }, // websocket socketClient: null, - socketReceiver: function (e) { }, //收到消息回调 + socketReceiver: function(e) {}, //收到消息回调 }, // 初始化websocket - initSocket: function () { + initSocket: function() { let that = this; // socket是否连接 let socketConnected = false; @@ -206,7 +210,7 @@ App({ connect(); // 监听 WebSocket 连接打开事件 - wx.onSocketOpen(function (res) { + wx.onSocketOpen(function(res) { console.log("WebSocket 连接成功") socketConnected = true; ws.onopen(); @@ -218,12 +222,12 @@ App({ }) // 监听 WebSocket 接受到服务器的消息事件 - wx.onSocketMessage(function (res) { + wx.onSocketMessage(function(res) { ws.onmessage(res); }) // 监听 WebSocket 错误事件 - wx.onSocketError(function (res) { + wx.onSocketError(function(res) { console.log("WebSocket 错误事件") if (!socketConnected) { // 断线重连 @@ -234,7 +238,7 @@ App({ }) // 监听 WebSocket 连接关闭事件 - wx.onSocketClose(function (res) { + wx.onSocketClose(function(res) { console.log("WebSocket 连接关闭") socketConnected = false; // 断线重连 @@ -250,11 +254,11 @@ App({ * The heart-beating is using window.setInterval() to regularly send heart-beats and/or check server heart-beats. * 可看stomp.js的源码(195,207,489行),由于小程序没有window对象,所以我们要调用小程序的定时器api实现 */ - Stomp.setInterval = function (interval, f) { + Stomp.setInterval = function(interval, f) { return setInterval(f, interval); }; // 结束定时器的循环调用 - Stomp.clearInterval = function (id) { + Stomp.clearInterval = function(id) { return clearInterval(id); }; @@ -262,17 +266,17 @@ App({ that.globalData.socketClient = stompClient; - stompClient.connect({}, function (callback) { + stompClient.connect({}, function(callback) { // 订阅自己的 - stompClient.subscribe('/user/' + config.weapp.AppId + '/' + that.globalData.openId + '/message', function (message, headers) { + stompClient.subscribe('/user/' + config.weapp.AppId + '/' + that.globalData.openId + '/message', function(message, headers) { console.log('收到只发送给我的消息:', message); that.globalData.socketReceiver(JSON.parse(message.body)); // 通知服务端收到消息 message.ack(); }); - stompClient.subscribe('/topic/' + config.weapp.AppId, function (message, headers) { + stompClient.subscribe('/topic/' + config.weapp.AppId, function(message, headers) { console.log('收到TOPIC的消息:', message); that.globalData.socketReceiver(JSON.parse(message.body)); // 通知服务端收到消息 @@ -287,7 +291,7 @@ App({ }, //统一发送消息 - sendSocketMessage: function (msg) { + sendSocketMessage: function(msg) { this.globalData.socketClient.send("/app/message", {}, JSON.stringify(msg)); } -}); +}); \ No newline at end of file