app.js

  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 });

獲取用戶信息、獲取定位小程序

import SiteInfo from "siteInfo.js";
App({
onShow : function () {
// wx.checkSession({ //檢測當前用戶的session_key是否過時
// success: function() { //session_key 未過時,而且在本生命週期一直有效

// },
// fail: function() { //session_key 已經失效,須要從新執行登陸流程
// console.warn("受權過時,從新登陸小程序")
// wx.navigateTo({
// url: "/pages/openauth/index" //從新受權
// })
// }
// })
},
onLaunch : function () {
// console.log("受權未過時")
let vm = this;
wx. showToast({
title: '歡迎來到 motiva !',
icon: "none",
mask: true
})
//更新版本
vm. CheckVersion();
let promise = this. SetHeader();
promise. then( res => {
}). catch( errMsg => {
console. error( errMsg)
});
},
/**檢查小程序版本更新 */
CheckVersion : function () {
const updateManager = wx. getUpdateManager()

updateManager. onCheckForUpdate( function ( res) {
// 請求完新版本信息的回調
// console.log(res.hasUpdate)
})

updateManager. onUpdateReady( function () {
wx. showModal({
title: '更新提示',
content: '新版本已經準備好,是否重啓應用?',
success : function ( res) {
if ( res. confirm) {
// 新的版本已經下載好,調用 applyUpdate 應用新版本並重啓
updateManager. applyUpdate()
}
}
})
})

updateManager. onUpdateFailed( function () {
// 新版本下載失敗
console. error( '新版本下載失敗!')
wx. showToast({
title: '新版本下載失敗,請檢查你的網路連接是否通暢!',
icon: 'none',
duration: 2000,
mask: true
})
})
},
/**檢查是否受權 */
CheckAuth : function () {
var that = this;
// 查看是否受權
wx. getSetting({
success( res) {
if ( res. authSetting[ 'scope.userInfo']) {
// 已經受權,能夠直接調用 getUserInfo 獲取頭像暱稱
wx. getUserInfo({
success : function ( res) {
App. globalData. userInfo = res. userInfo; //更新用戶信息
}
});
//是否受權獲取地理位置
if (! res. authSetting[ 'scope.userLocation']) {
wx. navigateTo({
url: '/pages/openauth/index', //跳轉到受權頁面
})
}
} else {
wx. navigateTo({
url: '/pages/openauth/index', //跳轉到受權頁面
})
}
}
})
},
/**小程序登陸:調用接口獲取登陸憑證(code) */
WxLogin : function () {
return new Promise(( resolve, reject) => {
let vm = this;
wx. showLoading({
title: '登陸小程序',
mask: true
});
wx. login({
success( res) {
if ( res. code) {
//發起網絡請求
wx. request({
url: SiteInfo[ "Siteroot"] + '/api/login',
header: {
Version: SiteInfo[ "Version"]
},
method: 'POST',
data: {
code: res. code
},
success( res) {
res. data && res. data. code == 200 ? resolve( res. data. data) : reject( res. data. message);
},
fail( res) {
wx. hideLoading();
console. log( '登陸失敗!' + res. errMsg)
},
complete : function ( res) {
wx. hideLoading();
},
});
} else {
wx. hideLoading();
console. log( '登陸失敗!' + res. errMsg)
}
},
fail( res) {
console. error( '調用小程序登陸接口失敗!' + res. errMsg)
wx. showToast({
title: '登陸小程序失敗,請檢查你的網路連接是否通暢',
icon: 'none',
duration: 2000,
mask: true
})
}
})
});
},
/** 自定義頭部:返回按鈕位置 */
SetHeader : function () {
return new Promise(( resolve, reject) => {
const vm = this;
wx. getSystemInfo({
success : function ( res) {
let totalTopHeight = 82
if ( res. model. indexOf( 'iPhone X') !== - 1) {
totalTopHeight = 110
} else if ( res. model. indexOf( 'iPhone') !== - 1) {
totalTopHeight = 64
}
vm. globalData. statusBarHeight = res. statusBarHeight;
vm. globalData. titleBarHeight = totalTopHeight - res. statusBarHeight;
resolve( res);
},
failure() {
vm. globalData. statusBarHeight = 0;
vm. globalData. titleBarHeight = 0;
reject( "獲取系統信息失敗!");
}
})
})

},
/** 開始選擇地理位置 */
ChooseLocation : function () {
let vm = this;
wx. showLoading({
title: '獲取地理位置',
mask: true,
});
setTimeout(() => {
wx. hideLoading()
wx. chooseLocation({
success : ( res) => {
// console.log(res);
if ( res. errMsg == "chooseLocation:ok") {
if ( res. address == "") {
vm. CancelChooseLocation()
} else {
delete res. errMsg;
vm. globalData. locationBool = true; //
wx. setStorageSync( "location", res) //將地理位置緩存
vm. GetLoacationOrGoHome(); //前往首頁
}
} else {
console. error( res. errMsg);
}
},
fail : ( res) => {
vm. CancelChooseLocation()
// if (res.errMsg == "chooseLocation:fail cancel") {
// vm.CancelChooseLocation()
// } else if (res.errMsg =="chooseLocation:fail auth deny"){
// wx.showModal({
// content: 'motiva 須要獲取你的位置來定位附近的場地。',
// showCancel: false,
// success(res) {
// if (res.confirm) {
// vm.ChooseLocation()
// }
// }
// })
// }
console. error( "chooseLocation:" + res. errMsg);
},
complete : () => { }
});
}, 500)
},
/**用戶取消選擇地理位置 */
CancelChooseLocation : function () {
let vm = this;
let location_name = wx. getStorageSync( 'location'). name;
if (! location_name) {
wx. showModal({
content: '點擊肯定在地圖下方選擇您的地理位置,motiva 須要定位你附近的場地。',
showCancel: false,
success( res) {
if ( res. confirm) {
vm. ChooseLocation()
}
}
})
}
},
/** 完成受權和地理位置 以後返回首頁 */
GetLoacationOrGoHome : function () {
// let location = wx.getStorageSync("location");
// if (location) {
var pages = getCurrentPages();
if ( pages. length == 1) {
wx. switchTab({
url: '/pages/home/index/index'
})
} else {
wx. navigateBack({
delta: 2
})
}

// } else {
// this.ChooseLocation();
// }
},
/**獲取用戶信息 */
SaveUserInfo : function ( userInfo) {
return new Promise(( resolve, reject) => {
wx. request({
url: SiteInfo[ "Siteroot"] + '/api/registered',
header: {
Version: SiteInfo[ "Version"]
},
method: 'POST',
data: {
userInfo: userInfo
},
success( res) {
res. data && res. data. code == 200 ? resolve( res. data. data) : reject( res. data. message);
},
fail( res) {
wx. hideLoading();
console. log( '用戶註冊失敗!' + res. errMsg)
},
complete : function ( res) {
wx. hideLoading();
},
});

})
},
globalData: {
statusBarHeight: 0,
titleBarHeight: 0,
userInfo: null, //用戶信息
location: null, //用戶地理位置
userInfoBool: false, //用戶受權
locationBool: false, //用戶定位
needReauth: false //是否須要從新受權
}
});
相關文章
相關標籤/搜索