| @@ -3,22 +3,22 @@ const Http = require("./utils/HttpBasics"); | |||||
| const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} | const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} | ||||
| App({ | App({ | ||||
| data: {}, | data: {}, | ||||
| onLaunch: function (options) { | |||||
| onLaunch: function(options) { | |||||
| var that = this; | var that = this; | ||||
| that.globalData.sceneAddress = options.scene; | 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; | let that = this; | ||||
| // 登录 | // 登录 | ||||
| wx.login({ | wx.login({ | ||||
| @@ -31,9 +31,9 @@ App({ | |||||
| sceneAddress: sceneAddress | sceneAddress: sceneAddress | ||||
| } | } | ||||
| Http.post({ | Http.post({ | ||||
| url: config.api.login, | |||||
| data: usrdata | |||||
| }) | |||||
| url: config.api.login, | |||||
| data: usrdata | |||||
| }) | |||||
| .then(res => { | .then(res => { | ||||
| if (res.data && res.data.score) { | if (res.data && res.data.score) { | ||||
| if (res.data.score != 0) { | if (res.data.score != 0) { | ||||
| @@ -54,7 +54,7 @@ App({ | |||||
| title: '提示', | title: '提示', | ||||
| showCancel: false, | showCancel: false, | ||||
| content: '登录失败,请重新尝试', | content: '登录失败,请重新尝试', | ||||
| success: function (res) { | |||||
| success: function(res) { | |||||
| if (res.cancel) { | if (res.cancel) { | ||||
| //点击取消,默认隐藏弹框 | //点击取消,默认隐藏弹框 | ||||
| } else { | } else { | ||||
| @@ -69,54 +69,38 @@ App({ | |||||
| } | } | ||||
| }) | }) | ||||
| }, | }, | ||||
| updateManager: function () { | |||||
| /** | |||||
| * 小程序版本更新 | |||||
| */ | |||||
| autoUpdate: function() { | |||||
| let that = this; | |||||
| if (wx.canIUse('getUpdateManager')) { | if (wx.canIUse('getUpdateManager')) { | ||||
| const updateManager = wx.getUpdateManager() | const updateManager = wx.getUpdateManager() | ||||
| updateManager.onCheckForUpdate(function (res) { | |||||
| // 1. 检查小程序是否有新版本发布 | |||||
| updateManager.onCheckForUpdate(function(res) { | |||||
| // 请求完新版本信息的回调 | // 请求完新版本信息的回调 | ||||
| if (res.hasUpdate) { | 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: { | globalData: { | ||||
| scene: "", | scene: "", | ||||
| // token | // token | ||||
| @@ -153,11 +157,11 @@ App({ | |||||
| }, | }, | ||||
| // websocket | // websocket | ||||
| socketClient: null, | socketClient: null, | ||||
| socketReceiver: function (e) { }, //收到消息回调 | |||||
| socketReceiver: function(e) {}, //收到消息回调 | |||||
| }, | }, | ||||
| // 初始化websocket | // 初始化websocket | ||||
| initSocket: function () { | |||||
| initSocket: function() { | |||||
| let that = this; | let that = this; | ||||
| // socket是否连接 | // socket是否连接 | ||||
| let socketConnected = false; | let socketConnected = false; | ||||
| @@ -206,7 +210,7 @@ App({ | |||||
| connect(); | connect(); | ||||
| // 监听 WebSocket 连接打开事件 | // 监听 WebSocket 连接打开事件 | ||||
| wx.onSocketOpen(function (res) { | |||||
| wx.onSocketOpen(function(res) { | |||||
| console.log("WebSocket 连接成功") | console.log("WebSocket 连接成功") | ||||
| socketConnected = true; | socketConnected = true; | ||||
| ws.onopen(); | ws.onopen(); | ||||
| @@ -218,12 +222,12 @@ App({ | |||||
| }) | }) | ||||
| // 监听 WebSocket 接受到服务器的消息事件 | // 监听 WebSocket 接受到服务器的消息事件 | ||||
| wx.onSocketMessage(function (res) { | |||||
| wx.onSocketMessage(function(res) { | |||||
| ws.onmessage(res); | ws.onmessage(res); | ||||
| }) | }) | ||||
| // 监听 WebSocket 错误事件 | // 监听 WebSocket 错误事件 | ||||
| wx.onSocketError(function (res) { | |||||
| wx.onSocketError(function(res) { | |||||
| console.log("WebSocket 错误事件") | console.log("WebSocket 错误事件") | ||||
| if (!socketConnected) { | if (!socketConnected) { | ||||
| // 断线重连 | // 断线重连 | ||||
| @@ -234,7 +238,7 @@ App({ | |||||
| }) | }) | ||||
| // 监听 WebSocket 连接关闭事件 | // 监听 WebSocket 连接关闭事件 | ||||
| wx.onSocketClose(function (res) { | |||||
| wx.onSocketClose(function(res) { | |||||
| console.log("WebSocket 连接关闭") | console.log("WebSocket 连接关闭") | ||||
| socketConnected = false; | 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. | * 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.js的源码(195,207,489行),由于小程序没有window对象,所以我们要调用小程序的定时器api实现 | ||||
| */ | */ | ||||
| Stomp.setInterval = function (interval, f) { | |||||
| Stomp.setInterval = function(interval, f) { | |||||
| return setInterval(f, interval); | return setInterval(f, interval); | ||||
| }; | }; | ||||
| // 结束定时器的循环调用 | // 结束定时器的循环调用 | ||||
| Stomp.clearInterval = function (id) { | |||||
| Stomp.clearInterval = function(id) { | |||||
| return clearInterval(id); | return clearInterval(id); | ||||
| }; | }; | ||||
| @@ -262,17 +266,17 @@ App({ | |||||
| that.globalData.socketClient = stompClient; | 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); | console.log('收到只发送给我的消息:', message); | ||||
| that.globalData.socketReceiver(JSON.parse(message.body)); | that.globalData.socketReceiver(JSON.parse(message.body)); | ||||
| // 通知服务端收到消息 | // 通知服务端收到消息 | ||||
| message.ack(); | message.ack(); | ||||
| }); | }); | ||||
| stompClient.subscribe('/topic/' + config.weapp.AppId, function (message, headers) { | |||||
| stompClient.subscribe('/topic/' + config.weapp.AppId, function(message, headers) { | |||||
| console.log('收到TOPIC的消息:', message); | console.log('收到TOPIC的消息:', message); | ||||
| that.globalData.socketReceiver(JSON.parse(message.body)); | 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)); | this.globalData.socketClient.send("/app/message", {}, JSON.stringify(msg)); | ||||
| } | } | ||||
| }); | |||||
| }); | |||||