| | |
| | | this.lastToken = getToken() |
| | | this.initApp() |
| | | |
| | | // 监听用户登录事件 |
| | | uni.$on('user-login', () => { |
| | | console.log('接收到用户登录事件,启动消息轮询') |
| | | const token = getToken() |
| | | if (token) { |
| | | this.lastToken = token |
| | | this.updateUnreadMessageBadge() |
| | | this.startMessagePolling() |
| | | } |
| | | }) |
| | | |
| | | // 监听用户登出事件 |
| | | uni.$on('user-logout', () => { |
| | | console.log('接收到用户登出事件,停止消息轮询') |
| | |
| | | } |
| | | |
| | | // 应用显示时刷新未读消息数量 |
| | | if (currentToken) { |
| | | // 注意:只有已登录且不在登录页面时才调用 |
| | | if (currentToken && !this.isLoginPage()) { |
| | | this.updateUnreadMessageBadge() |
| | | // 重新启动轮询(如果之前已停止) |
| | | if (!this.messagePollingTimer) { |
| | |
| | | this.checkLogin() |
| | | //#endif |
| | | |
| | | // 如果已登录,启动未读消息轮询 |
| | | if (getToken()) { |
| | | this.updateUnreadMessageBadge() |
| | | // 每30秒轮询一次 |
| | | this.startMessagePolling() |
| | | } |
| | | // 注意:不在应用启动时自动启动轮询 |
| | | // 只有在用户主动登录成功后才启动(通过 user-login 事件触发) |
| | | }, |
| | | initConfig() { |
| | | this.globalData.config = config |
| | |
| | | } |
| | | }, |
| | | |
| | | // 判断当前是否在登录页面 |
| | | isLoginPage() { |
| | | const pages = getCurrentPages() |
| | | if (pages.length === 0) { |
| | | return false |
| | | } |
| | | const currentPage = pages[pages.length - 1] |
| | | const route = currentPage.route || '' |
| | | // 判断是否为登录相关页面 |
| | | return route.includes('login') || route.includes('register') |
| | | }, |
| | | |
| | | // 更新未读消息徽标 |
| | | updateUnreadMessageBadge() { |
| | | // 检查是否已登录,未登录则不请求 |