1 import SiteInfo from "siteInfo.js"; 2 App({ 3 onShow: function () { 4 // wx.checkSession({ //檢測當前用戶的session_key是否過時 5 // success: function() { //session_key 未過時,而且在本生命週期一直有效 6 7 // }, 8 // fail: function() { //session_key 已經失效,須要從新執行登陸流程 9 // console.warn("受權過時,從新登陸小程序") 10 // wx.navigateTo({ 11 // url: "/pages/openauth/index" //從新受權 12 // }) 13 // } 14 // }) 15 }, 16 onLaunch: function () { 17 // console.log("受權未過時") 18 let vm = this; 19 wx.showToast({ 20 title: '歡迎來到 nunumua !', 21 icon: "none", 22 mask: true 23 }) 24 //更新版本 25 vm.CheckVersion(); 26 let promise = this.SetHeader(); 27 promise.then(res => { 28 }).catch(errMsg => { 29 console.error(errMsg) 30 }); 31 }, 32 /**檢查小程序版本更新 */ 33 CheckVersion: function () { 34 const updateManager = wx.getUpdateManager() 35 36 updateManager.onCheckForUpdate(function (res) { 37 // 請求完新版本信息的回調 38 // console.log(res.hasUpdate) 39 }) 40 41 updateManager.onUpdateReady(function () { 42 wx.showModal({ 43 title: '更新提示', 44 content: '新版本已經準備好,是否重啓應用?', 45 success: function (res) { 46 if (res.confirm) { 47 // 新的版本已經下載好,調用 applyUpdate 應用新版本並重啓 48 updateManager.applyUpdate() 49 } 50 } 51 }) 52 }) 53 54 updateManager.onUpdateFailed(function () { 55 // 新版本下載失敗 56 console.error('新版本下載失敗!') 57 wx.showToast({ 58 title: '新版本下載失敗,請檢查你的網路連接是否通暢!', 59 icon: 'none', 60 duration: 2000, 61 mask: true 62 }) 63 }) 64 }, 65 /**檢查是否受權 */ 66 CheckAuth: function () { 67 var that = this; 68 // 查看是否受權 69 wx.getSetting({ 70 success(res) { 71 if (res.authSetting['scope.userInfo']) { 72 // 已經受權,能夠直接調用 getUserInfo 獲取頭像暱稱 73 wx.getUserInfo({ 74 success: function (res) { 75 App.globalData.userInfo = res.userInfo; //更新用戶信息 76 } 77 }); 78 //是否受權獲取地理位置 79 if (!res.authSetting['scope.userLocation']) { 80 wx.navigateTo({ 81 url: '/pages/openauth/index', //跳轉到受權頁面 82 }) 83 } 84 } else { 85 wx.navigateTo({ 86 url: '/pages/openauth/index', //跳轉到受權頁面 87 }) 88 } 89 } 90 }) 91 }, 92 /**小程序登陸:調用接口獲取登陸憑證(code) */ 93 WxLogin: function () { 94 return new Promise((resolve, reject) => { 95 let vm = this; 96 wx.showLoading({ 97 title: '登陸小程序', 98 mask: true 99 }); 100 wx.login({ 101 success(res) { 102 if (res.code) { 103 //發起網絡請求 104 wx.request({ 105 url: SiteInfo["Siteroot"] + '/api/login', 106 header: { 107 Version: SiteInfo["Version"] 108 }, 109 method: 'POST', 110 data: { 111 code: res.code 112 }, 113 success(res) { 114 res.data && res.data.code == 200 ? resolve(res.data.data) : reject(res.data.message); 115 }, 116 fail(res) { 117 wx.hideLoading(); 118 console.log('登陸失敗!' + res.errMsg) 119 }, 120 complete: function (res) { 121 wx.hideLoading(); 122 }, 123 }); 124 } else { 125 wx.hideLoading(); 126 console.log('登陸失敗!' + res.errMsg) 127 } 128 }, 129 fail(res) { 130 console.error('調用小程序登陸接口失敗!' + res.errMsg) 131 wx.showToast({ 132 title: '登陸小程序失敗,請檢查你的網路連接是否通暢', 133 icon: 'none', 134 duration: 2000, 135 mask: true 136 }) 137 } 138 }) 139 }); 140 }, 141 /** 自定義頭部:返回按鈕位置 */ 142 SetHeader: function () { 143 return new Promise((resolve, reject) => { 144 const vm = this; 145 wx.getSystemInfo({ 146 success: function (res) { 147 let totalTopHeight = 82 148 if (res.model.indexOf('iPhone X') !== -1) { 149 totalTopHeight = 110 150 } else if (res.model.indexOf('iPhone') !== -1) { 151 totalTopHeight = 64 152 } 153 vm.globalData.statusBarHeight = res.statusBarHeight; 154 vm.globalData.titleBarHeight = totalTopHeight - res.statusBarHeight; 155 resolve(res); 156 }, 157 failure() { 158 vm.globalData.statusBarHeight = 0; 159 vm.globalData.titleBarHeight = 0; 160 reject("獲取系統信息失敗!"); 161 } 162 }) 163 }) 164 165 }, 166 /** 開始選擇地理位置 */ 167 ChooseLocation: function () { 168 let vm = this; 169 wx.showLoading({ 170 title: '獲取地理位置', 171 mask: true, 172 }); 173 setTimeout(() => { 174 wx.hideLoading() 175 wx.chooseLocation({ 176 success: (res) => { 177 // console.log(res); 178 if (res.errMsg == "chooseLocation:ok") { 179 if (res.address == "") { 180 vm.CancelChooseLocation() 181 } else { 182 delete res.errMsg; 183 vm.globalData.locationBool = true; // 184 wx.setStorageSync("location", res) //將地理位置緩存 185 vm.GetLoacationOrGoHome(); //前往首頁 186 } 187 } else { 188 console.error(res.errMsg); 189 } 190 }, 191 fail: (res) => { 192 vm.CancelChooseLocation() 193 // if (res.errMsg == "chooseLocation:fail cancel") { 194 // vm.CancelChooseLocation() 195 // } else if (res.errMsg =="chooseLocation:fail auth deny"){ 196 // wx.showModal({ 197 // content: 'motiva 須要獲取你的位置來定位附近的場地。', 198 // showCancel: false, 199 // success(res) { 200 // if (res.confirm) { 201 // vm.ChooseLocation() 202 // } 203 // } 204 // }) 205 // } 206 console.error("chooseLocation:" + res.errMsg); 207 }, 208 complete: () => { } 209 }); 210 }, 500) 211 }, 212 /**用戶取消選擇地理位置 */ 213 CancelChooseLocation: function () { 214 let vm = this; 215 let location_name = wx.getStorageSync('location').name; 216 if (!location_name) { 217 wx.showModal({ 218 content: '點擊肯定在地圖下方選擇您的地理位置,nunumua 須要定位你附近的場地。', 219 showCancel: false, 220 success(res) { 221 if (res.confirm) { 222 vm.ChooseLocation() 223 } 224 } 225 }) 226 } 227 }, 228 /** 完成受權和地理位置 以後返回首頁 */ 229 GetLoacationOrGoHome: function () { 230 // let location = wx.getStorageSync("location"); 231 // if (location) { 232 var pages = getCurrentPages(); 233 if (pages.length == 1) { 234 wx.switchTab({ 235 url: '/pages/home/index/index' 236 }) 237 } else { 238 wx.navigateBack({ 239 delta: 2 240 }) 241 } 242 243 // } else { 244 // this.ChooseLocation(); 245 // } 246 }, 247 /**獲取用戶信息 */ 248 SaveUserInfo: function (userInfo) { 249 return new Promise((resolve, reject) => { 250 wx.request({ 251 url: SiteInfo["Siteroot"] + '/api/registered', 252 header: { 253 Version: SiteInfo["Version"] 254 }, 255 method: 'POST', 256 data: { 257 userInfo: userInfo 258 }, 259 success(res) { 260 res.data && res.data.code == 200 ? resolve(res.data.data) : reject(res.data.message); 261 }, 262 fail(res) { 263 wx.hideLoading(); 264 console.log('用戶註冊失敗!' + res.errMsg) 265 }, 266 complete: function (res) { 267 wx.hideLoading(); 268 }, 269 }); 270 271 }) 272 }, 273 globalData: { 274 statusBarHeight: 0, 275 titleBarHeight: 0, 276 userInfo: null,//用戶信息 277 location: null,//用戶地理位置 278 userInfoBool: false,//用戶受權 279 locationBool: false,//用戶定位 280 needReauth: false //是否須要從新受權 281 } 282 });
獲取用戶信息、獲取定位小程序