// app.js import { loginLog, userLogin, getMyInfo, bindDevice } from '~/api/user' import { createStoreBindings } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' let storeBindings App({ async onLaunch() { this.updateApplet() this.checkIsIos() this.getNavbarInfo() await loginLog() }, async onShow(options) { if (!this.storeBindings) { this.storeBindings = createStoreBindings(this, { store, actions: ['setUser'] }) } let { path, scene, query } = wx.getEnterOptionsSync() //判断是不是扫海报进入 if (query.scene && [1047, 1048].includes(scene) && path == 'pages/index/index') { let params = decodeURIComponent(query.scene).split('&') if (params.length == 1) { this.login(params[0]) } else { this.login() } } else { let shareUid = options.query.uid || '' let userChannelCode='3001' if ([1045, 1046, 1084].includes(scene)) { console.log("朋友圈广告进入"); userChannelCode='4001' } this.login(shareUid,userChannelCode) } }, async login(shareUid,userChannelCode='3001') { let uid = wx.getStorageSync('uid') if (uid) { let userInfo = await getMyInfo() this.setUser(userInfo.user) this.globalData.userInfo = userInfo.user this.deviceLogin() if (getApp().callBack) { getApp().callBack(); } } else { wx.login({ success: async (res) => { if (res.code) { // 获取openid let data = { code: res.code, userChannelCode } if (shareUid != 'undefined' && shareUid) { data.shareUid = shareUid } let userRes = await userLogin(data) this.setUser(userRes.data) wx.setStorageSync('uid', userRes.data.uid) wx.setStorageSync('user', userRes.data) this.globalData.userInfo = userRes.data this.deviceLogin() if (getApp().callBack) { getApp().callBack(userRes); } } } }) } }, checkIsIos: function () { wx.getSystemInfo({ success: (res) => { // 设备显示区域的宽度,单位px this.globalData.windowWidth = res.windowWidth this.globalData.windowHeight = res.windowHeight if (res.system.search('iOS') != -1) { this.globalData.isIOS = true } let { scene } = wx.getLaunchOptionsSync() // 1023 安卓系统桌面图标,1104微信聊天主界面下拉,「我的小程序」栏(基础库2.2.4-2.29.0版本废弃,2.29.1版本起生效) if (scene != 1023) { let preTime = wx.getStorageSync('preDesktopTime') let flag = !preTime ? true : (new Date() - preTime) / 43200000 > 1 ? true : false if (flag || !preTime) { this.globalData.desktopTips = true wx.setStorage({ key: "preDesktopTime", data: new Date() }) } } } }) }, // 音箱端登录 deviceLogin() { let { path, scene, query } = wx.getEnterOptionsSync() // 1047 扫描小程序码 1048长按图片识别小程序码 var gradeObj = Object.keys({ "PRESCHOOL": "学前班", "PRIMARY_FIRST_GRADE": "一年级", "PRIMARY_SECOND_GRADE": "二年级", "PRIMARY_THREE_GRADE": "三年级", "PRIMARY_SENIOR_GRADE": "四年级", "PRIMARY_FIVE_GRADE": "五年级", "PRIMARY_SIX_GRADE": "六年级", }) if (query.scene && [1047, 1048].includes(scene) && path == 'pages/index/index') { let params = decodeURIComponent(query.scene).split('&') if (params.length > 1) { bindDevice({ deviceCode: params[0], channelCode: params[1], grade: gradeObj[params[2]], uid: wx.getStorageSync('uid') }).then(res => { console.log(res); }) } } }, getNavbarInfo() { // 获取系统信息 const systemInfo = wx.getSystemInfoSync(); // 胶囊按钮位置信息 const menuButtonInfo = wx.getMenuButtonBoundingClientRect(); // 导航栏高度 = 状态栏高度 + 44 this.globalData.navBarHeight = systemInfo.statusBarHeight + 44; this.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right; this.globalData.menuTop = menuButtonInfo.top; this.globalData.menuHeight = menuButtonInfo.height; }, updateApplet() { // 获取小程序更新机制兼容 if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 if (res.hasUpdate) { updateManager.onUpdateReady(function () { wx.showModal({ title: '更新提示', content: '新版本已经准备好,是否重启应用?', success: function (res) { if (res.confirm) { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function () { // 新的版本下载失败 wx.showModal({ title: '已经有新版本了哟~', content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', }) }) } }) } }, globalData: { userInfo: null, isIOS: false, // 判断设备是否为苹果 desktopTips: false, navBarHeight: 0, // 导航栏高度 menuRight: 0, // 胶囊距右方间距(方保持左、右间距一致) menuTop: 0, // 胶囊距底部间距(保持底部间距一致) menuHeight: 0, // 胶囊高度(自定义内容可与胶囊高度保证一致) windowWidth: 0, windowHeight: 0 } })