Преглед изворни кода

[小程序强制更新][修改]:提示更丰富一些

tags/C.7.1.0
Stormeye Wu пре 6 година
родитељ
комит
ce0f7e81ad
1 измењених фајлова са 69 додато и 65 уклоњено
  1. +69
    -65
      app.js

+ 69
- 65
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));
}
});
});

Loading…
Откажи
Сачувај