前言
根据官方文档有两种方式可以判断:
1、方法一: 调用获取系统信息API【uni.getSystemInfoSync()】,获取environment 字段判断。
在官方文档中特别说明:在企业微信中调用此接口时,会额外返回一个 environment 字段(微信中不返回),如此字段值为 wxwork,则表示当前小程序运行在企业微信环境中。
注意:只有运行在企业微信环境中,才能调用【wx.qy】的接口。
2、方法二: 根据上面一个提示,告诉我们在企微环境中,才可以调用【wx.qy】以获取版本信息。
由于调用获取系统信息API可能存在错误:
1、企业微信小程序调用getSystemInfo获取不到environment: “wxwork”?
2、企业微信小程序模式 environment: “wxwork” 时有时无?
这两个都来自微信开放社区的问答,但是从回答中没有看到明确的答案,应该是他们通过代码片段内部解决了吧,只是没有放出来,应该是开发问题(来自微信官方的自信)。
那么根据微信官方文档,取以上两个方法综合处理,应该是没得问题的。
以下是关于在个人微信和企业微信输出的比较:
1、企业微信 wx.qy = { "version":{ "updateTime":"2020.9.09 16:00:00", "info":"", "version":"1.3.7" }, "isWxLoginSupport":true }
返回企业微信API相关版本信息。
let _sysInfo = uni.getSystemInfoSync() _sysInfo = { ... "environment":"wxwork", "model":"iPhone X", } // 其中 _sysInfo.environment = wxwork;
返回 environment 字段为 wxwork。
2、个人微信
wx.qy = undefined
无法获取到相关信息。
let _sysInfo = uni.getSystemInfoSync() _sysInfo = { ... "model":"iPhone X", } // 其中 _sysInfo.environment = undefined;
没有返回 environment 字段。
3、应用
判断是否在企业微信环境中编译运行
isQiWeiCompileOperation() { let _sInfo = uni.getSystemInfoSync() if ((_sInfo.environment && 'wxwork' == _sInfo.environment) || wx.qy ) { return true } else { return false } }
更新并存储小程序编译环境
updateCompileOperation() { let _sInfo = uni.getSystemInfoSync() if ((systemInfo.environment && 'wxwork' == systemInfo.environment) || wx.qy ) { state.vuex_is_qy = true } else { state.vuex_is_qy = false } }
// 在小程序启动页【App.vue】调用存储 async onLaunch(options) { this.$store.commit('updateCompileOperation') },