Explorar o código

优化:获取当前运行的终端判断微信公众号

Yahoo %!s(int64=4) %!d(string=hai) anos
pai
achega
f28d2fefe8
Modificáronse 4 ficheiros con 69 adicións e 40 borrados
  1. 0 35
      core/app.js
  2. 2 2
      core/bootstrap.js
  3. 64 0
      core/platform.js
  4. 3 3
      main.js

+ 0 - 35
core/app.js

@@ -2,41 +2,6 @@ import store from '@/store'
 import * as util from '@/utils/util'
 import { paginate } from '@/common/constant'
 
-/**
- * 获取当前运行的终端(App H5 小程序)
- * https://uniapp.dcloud.io/platform
- */
-export const getPlatform = () => {
-  // #ifdef APP-PLUS
-  const platform = 'App'
-  // #endif
-  // #ifdef APP-PLUS-NVUE
-  const platform = 'App'
-  // #endif
-  // #ifdef H5
-  const platform = 'H5'
-  // #endif
-  // #ifdef MP-WEIXIN
-  const platform = 'MP-WEIXIN'
-  // #endif
-  // #ifdef MP-ALIPAY
-  const platform = 'MP-ALIPAY'
-  // #endif
-  // #ifdef MP-BAIDU
-  const platform = 'MP-BAIDU'
-  // #endif
-  // #ifdef MP-TOUTIAO
-  const platform = 'MP-TOUTIAO'
-  // #endif
-  // #ifdef MP-QQ
-  const platform = 'MP-QQ'
-  // #endif
-  // #ifdef MP-360
-  const platform = 'MP-360'
-  // #endif
-  return platform
-}
-
 /**
  * 显示成功提示框
  */

+ 2 - 2
core/bootstrap.js

@@ -1,11 +1,11 @@
 import store from '@/store'
 import storage from '@/utils/storage'
-import { getPlatform } from '@/core/app'
+import platform from '@/core/platform'
 import { ACCESS_TOKEN, USER_ID } from '@/store/mutation-types'
 
 export default function Initializer() {
   // 当前运行的终端
-  store.commit('SET_PLATFORM', getPlatform())
+  store.commit('SET_PLATFORM', platform)
   // 用户认证token
   store.commit('SET_TOKEN', storage.get(ACCESS_TOKEN))
   // 当前用户ID

+ 64 - 0
core/platform.js

@@ -0,0 +1,64 @@
+/**
+ * 获取当前运行的客户端(APP H5 小程序)
+ * https://uniapp.dcloud.io/platform
+ */
+const getPlatform = () => {
+  // #ifdef APP-PLUS
+  const platform = 'APP'
+  // #endif
+  // #ifdef APP-PLUS-NVUE
+  const platform = 'APP'
+  // #endif
+  // #ifdef H5
+  const platform = weixinOfficial() ? 'H5-WEIXIN' : 'H5'
+  // #endif
+  // #ifdef MP-WEIXIN
+  const platform = 'MP-WEIXIN'
+  // #endif
+  // #ifdef MP-ALIPAY
+  const platform = 'MP-ALIPAY'
+  // #endif
+  // #ifdef MP-BAIDU
+  const platform = 'MP-BAIDU'
+  // #endif
+  // #ifdef MP-TOUTIAO
+  const platform = 'MP-TOUTIAO'
+  // #endif
+  // #ifdef MP-LARK	
+  const platform = 'MP-LARK'
+  // #endif
+  // #ifdef MP-QQ
+  const platform = 'MP-QQ'
+  // #endif
+  // #ifdef MP-KUAISHOU	
+  const platform = 'MP-KUAISHOU'
+  // #endif
+  // #ifdef MP-360
+  const platform = 'MP-360'
+  // #endif
+  // #ifdef QUICKAPP-WEBVIEW
+  const platform = 'QUICKAPP-WEBVIEW'
+  // #endif
+  return platform
+}
+
+// 是否为微信公众号端
+const weixinOfficial = () => {
+  // #ifdef H5
+  const ua = window.navigator.userAgent.toLowerCase()
+  return String(ua.match(/MicroMessenger/i)) === 'micromessenger'
+  // #endif
+  return false
+}
+
+const platfrom = getPlatform()
+
+export const isH5 = platfrom === 'H5'
+export const isApp = platfrom === 'APP'
+export const isMpWeixin = platfrom === 'MP-WEIXIN'
+
+// 是否为微信公众号端
+// 相当于H5端运行在微信内置浏览器, 但是需要使用微信的jssdk所以要单独区分
+export const isWeixinOfficial = platfrom === 'H5-WEIXIN'
+
+export default platfrom

+ 3 - 3
main.js

@@ -1,10 +1,10 @@
 import Vue from 'vue'
+import uView from 'uview-ui'
 import App from './App'
 import store from './store'
-import uView from 'uview-ui'
+import platform from './core/platform'
 import bootstrap from './core/bootstrap'
 import {
-  getPlatform,
   navTo,
   showToast,
   showSuccess,
@@ -18,7 +18,7 @@ Vue.config.productionTip = false
 App.mpType = 'app'
 
 // 当前运行的终端
-Vue.prototype.$platform = getPlatform()
+Vue.prototype.$platform = platform
 
 // 载入uView库
 Vue.use(uView)