一、概述
wx.miniprogram.getenv
是微信小程序的 API 之一,其作用是获取小程序的全局唯一的环境变量信息。这些环境变量包括了小程序运行时的一些信息,比如小程序的名称、版本号等等。通过获取这些信息,我们可以更好地了解小程序的运行情况,并且可以实现更加智能、高效的应用逻辑。
二、使用方法
要使用 wx.miniprogram.getenv
,我们需要先在小程序代码中导入微信开发者工具提供的 API,这可以通过下面的代码来完成:
const envInfo = wx.getSystemInfoSync()
const env = envInfo.SDKVersion.split('.')
const now_version = Number(env[0]) * 10000 + Number(env[1]) * 100 + Number(env[2])
const canIUseEnv = wx.canIUse('getEnv')
if (canIUseEnv) {
const env = wx.getStorageSync('env')
if (env) {
console.log('Env From Cache:', env)
if (now_version < env.version) {
wx.clearStorageSync('env')
} else {
return env
}
}
const new_env = wx.miniProgram.getEnv()
wx.setStorageSync('env', new_env)
console.log('Fetch New Env:', new_env)
return new_env
} else {
console.error('wx.miniProgram.getEnv已经失效,请尝试修改开发者工具版本或者升级微信客户端版本。')
return {
envVersion: '超时商城',
openid: 'error',
unionid: 'error'
}
}
上面的代码首先获取了当前小程序的 SDK 版本号,然后使用 wx.canIUse
方法判断系统是否支持 wx.miniprogram.getenv
这个 API。如果支持,那么先从缓存中读取环境变量信息,如果缓存中有,就直接返回这个信息,否则就通过 wx.miniprogram.getenv
重新获取环境变量信息,并将结果保存到缓存中。如果系统不支持 wx.miniprogram.getenv
,那么会返回一个默认的错误信息。
三、返回值说明
使用 wx.miniprogram.getenv
获取环境变量信息的返回值格式如下:
{
"miniprogram": {
"appid": "string",
"envVersion": "string",
"version": "string"
},
"app": {
"appId": "string",
"envVersion": "string",
"version": "string"
},
"plugin": {
"appId": "string",
"envVersion": "string",
"version": "string"
},
"env": {
"FID": "string",
"IDFA": "string",
"OAID": "string",
"IMEI": "string",
"AndroidID": "string"
}
}
其中:
miniprogram
对象用于描述当前小程序的信息:miniprogram.appid
:小程序的 appid。miniprogram.envVersion
:小程序启动时所使用的环境,包括develop
(开发版)、trial
(体验版)和release
(正式版)。miniprogram.version
:小程序的版本号。
app
对象用于描述当前小程序所属的公众号信息:app.appId
:小程序所属的公众号的 appid。app.envVersion
:小程序所属的公众号的当前环境,包括develop
(开发版)、trial
(体验版)和release
(正式版)。app.version
:小程序所属的公众号的版本号。
plugin
对象用于描述当前小程序所包含的插件信息:plugin.appId
:小程序所包含的插件的 appid,如果没有则为undefined
。plugin.envVersion
:小程序所包含的插件的当前环境,如果没有则为undefined
。plugin.version
:小程序所包含的插件的版本号,如果没有则为undefined
。
env
对象用于描述当前设备的环境信息:env.FID
:如果设备没有 IDFA,则可能返回 FID。env.IDFA
:苹果设备上的设备标识符,如果设备不支持 IDFA,则可能返回全 0 的值。env.OAID
:安卓设备上的设备标识符。env.IMEI
:安卓设备上的设备标识符。env.AndroidID
:安卓设备上的设备标识符。
四、注意事项
使用 wx.miniprogram.getenv
需要注意以下几点:
wx.miniprogram.getenv
是微信小程序的最新 API,可能存在兼容性问题。- 有些设备可能不支持 IDFA,需要使用 FID 替代。
- 当前 API 只能在小程序中使用,不能在插件中使用。
- 为了避免频繁请求 API 导致耗时过长,建议将获取到的环境变量信息进行缓存。
五、总结
wx.miniprogram.getenv
是微信小程序的新 API 之一,它可以帮助我们获取小程序的环境变量信息,包括小程序的名称、版本号等等。通过这些信息,我们可以更好地了解小程序的运行情况,并且实现更加智能、高效的应用逻辑。在使用时需要注意兼容性和缓存策略等问题。