68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
import updateManager from './common/updateManager';
|
|
var util = require('utils/util.js');
|
|
var api = require('config/api.js');
|
|
|
|
App({
|
|
onLaunch: function () {
|
|
wx.$api = api
|
|
wx.$util = util
|
|
// 展示本地存储能力
|
|
var logs = wx.getStorageSync('logs') || []
|
|
logs.unshift(Date.now())
|
|
wx.setStorageSync('logs', logs)
|
|
// 登录
|
|
wx.login({
|
|
success: (res) => {
|
|
util.request(api.AuthLoginByWeixin, {
|
|
code: res.code
|
|
}, 'POST').then(function (res) {
|
|
console.log('App Launch')
|
|
if (res.code === 1) {
|
|
let userInfo = res.data.userinfo;
|
|
wx.setStorageSync('token', res.data.token);
|
|
wx.setStorageSync('userInfo', userInfo);
|
|
}
|
|
});
|
|
},
|
|
});
|
|
//启动未读消息轮询(tabbar红点)
|
|
this.startUnreadPolling();
|
|
},
|
|
onShow: function () {
|
|
updateManager();
|
|
//从后台切回前台,立即刷新未读红点
|
|
this.refreshUnread();
|
|
},
|
|
onHide: function () {},
|
|
globalData: {
|
|
unread: 0, //未读消息数(tabbar红点共享缓存)
|
|
},
|
|
|
|
/**
|
|
* 未读消息轮询:小程序前台每10s刷新一次底部tabbar红点
|
|
* (切后台后JS执行会被系统挂起,定时器自然暂停,回前台由onShow立即补一次)
|
|
*/
|
|
startUnreadPolling: function () {
|
|
if (this.unreadTimer) {
|
|
return;
|
|
}
|
|
this.unreadTimer = setInterval(() => {
|
|
this.refreshUnread();
|
|
}, 10000);
|
|
},
|
|
|
|
/**
|
|
* 刷新当前 tab 页 tabbar 实例的红点(非tab页无tabbar实例,自动跳过)
|
|
*/
|
|
refreshUnread: function () {
|
|
if (!wx.getStorageSync('token')) {
|
|
return;
|
|
}
|
|
const page = getCurrentPages().pop();
|
|
const tabBar = page && typeof page.getTabBar === 'function' ? page.getTabBar() : null;
|
|
if (tabBar && typeof tabBar.refreshUnread === 'function') {
|
|
tabBar.refreshUnread();
|
|
}
|
|
},
|
|
});
|