微信小程序
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

3 роки тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import * as STORAGE from './utils/storage'
  2. import * as UTIL from './utils/util'
  3. import * as API from './utils/API'
  4. let APP = getApp();
  5. App({
  6. onLaunch() {
  7. var that = this;
  8. //存储storage初始化globalData数据--
  9. //何时存储,用来判断,不用获取code
  10. that.initGlobalData();
  11. //获取code
  12. UTIL.getCOdeFromWX({
  13. complate: (code) => {
  14. // //获取openId
  15. that.getOpenIdFromFW(code);
  16. }
  17. });
  18. //获取设备信息
  19. wx.getSystemInfo({
  20. success: function (res) {
  21. that.globalData.systemType = res.system.indexOf("Android") >= 0 ? "Android" : "IOS";
  22. that.globalData.isIphoneX = res.model.indexOf("iPhone X") >= 0 || res.model.indexOf("iPhone 1") >= 0;
  23. }
  24. });
  25. },
  26. onShow() {
  27. //更新机制
  28. this.wxappUpdateManager();
  29. },
  30. globalData: {
  31. // 系统用户登录信息(用户id、token)
  32. userInfo: {
  33. token: '',
  34. toastTimeout:null
  35. },
  36. //微信用户登陆信息(昵称、头像、省、城市)
  37. wxUserInfo: {
  38. nickName: '',
  39. avatarUrl: '',
  40. province: '',
  41. city: ''
  42. }
  43. ,
  44. /**
  45. * 小程序设置
  46. */
  47. setInfo: {
  48. //定位授权
  49. locationOpenIdWX: false,
  50. //纬度
  51. latitude:'',
  52. //经度
  53. longitude:'',
  54. }
  55. ,
  56. systemType:'',//设备类型 Android IOS
  57. isIphoneX: false, // 用来标识当前手机机型是否为 iPhone X
  58. },
  59. /**
  60. * 从服务端获取openId
  61. */
  62. getOpenIdFromFW(code) {
  63. let sendData = {
  64. code: code
  65. }
  66. UTIL.httpRequestNoneDetal(API.URL_GET_OPENID, sendData, "POST", {
  67. success: (res) => {
  68. if (res.code == API.SUCCESS_CODE) {
  69. // UTIL.showToastNoneIcon("openId:" + res._data.openid);
  70. STORAGE.setToken(res.token)
  71. STORAGE.setOpenId(res.data.openId)
  72. STORAGE.setSessionKey(res.data.sessionKey)
  73. getApp().globalData.userInfo.token = res.token;
  74. } else {
  75. //未获取到openId
  76. STORAGE.setOpenId(res.data.openId)
  77. STORAGE.setSessionKey(res.data.sessionKey)
  78. }
  79. }
  80. })
  81. },
  82. /**
  83. * 初始化globalData
  84. */
  85. initGlobalData() {
  86. var userInfo = {
  87. token: STORAGE.getToken()
  88. }
  89. console.log(userInfo)
  90. this.globalData.userInfo = userInfo;
  91. }
  92. ,
  93. /**
  94. * 小程序更新机制
  95. * 获取小程序更新机制兼容
  96. */
  97. wxappUpdateManager() {
  98. if (wx.canIUse('getUpdateManager')) {
  99. const updateManager = wx.getUpdateManager();
  100. if (!!updateManager) {
  101. updateManager.onCheckForUpdate(function (res) {
  102. // 请求完新版本信息的回调
  103. if (res.hasUpdate) {
  104. updateManager.onUpdateReady(function () {
  105. wx.showModal({
  106. title: '更新提示',
  107. content: '新版本已经准备好,是否重启应用?',
  108. success: function (res) {
  109. if (res.confirm) {
  110. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  111. updateManager.applyUpdate()
  112. }
  113. }
  114. })
  115. })
  116. updateManager.onUpdateFailed(function () {
  117. // 新的版本下载失败
  118. wx.showModal({
  119. title: '已经有新版本了哟~',
  120. content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
  121. })
  122. })
  123. }
  124. })
  125. }
  126. } else {
  127. // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  128. wx.showModal({
  129. title: '提示',
  130. content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  131. })
  132. }
  133. },
  134. showToast(msg, selfClass = '') {
  135. clearTimeout(this.globalData.toastTimeout);
  136. const page = getCurrentPages();
  137. const currPage = page[page.length - 1];
  138. currPage.setData({
  139. toastData: {
  140. showFlag: true,
  141. toastMsg: msg,
  142. selfClass,
  143. },
  144. });
  145. this.globalData.toastTimeout = setTimeout(() => {
  146. currPage.setData({
  147. toastData: {
  148. showFlag: false,
  149. selfClass: '',
  150. },
  151. });
  152. }, 2000);
  153. },
  154. })