wx.miniprogram.getenv详解

发布时间:2023-05-20

一、概述

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 之一,它可以帮助我们获取小程序的环境变量信息,包括小程序的名称、版本号等等。通过这些信息,我们可以更好地了解小程序的运行情况,并且实现更加智能、高效的应用逻辑。在使用时需要注意兼容性和缓存策略等问题。