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 //是否需要重新授权
}
});

猜你喜欢

转载自www.cnblogs.com/kitty-blog/p/11095451.html
今日推荐