兼容

小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容。

开发者可以通过以下方式进行低版本的兼容:

1. 版本号比较

微信客户端和小程序基础库的版本号风格为 Major.Minor.Patch(主版本号.次版本号.修订版本号)。

文档中会在组件,API等页面描述中带上各个功能所要求的最低基础库版本号。

开发者可以在小程序中通过调用 wx.getSystemInfo](https://developers.weixin.qq.com/minigame/dev/api/base/system/system-info/wx.getSystemInfo.html)) 或者 [wx.getSystemInfoSync 获取到当前小程序运行的基础库的版本号。通过版本号比较的方式进行运行低版本兼容逻辑。

版本号比较适用于所有情况。部分场景下也可以使用后面提到的方法完成。

注意:不要直接使用字符串比较的方法进行版本号比较。

版本号比较可以参考以下代码:

  1. function compareVersion(v1, v2) {
  2. v1 = v1.split('.')
  3. v2 = v2.split('.')
  4. const len = Math.max(v1.length, v2.length)
  5. while (v1.length < len) {
  6. v1.push('0')
  7. }
  8. while (v2.length < len) {
  9. v2.push('0')
  10. }
  11. for (let i = 0; i < len; i++) {
  12. const num1 = parseInt(v1[i])
  13. const num2 = parseInt(v2[i])
  14. if (num1 > num2) {
  15. return 1
  16. } else if (num1 < num2) {
  17. return -1
  18. }
  19. }
  20. return 0
  21. }
  22. compareVersion('1.11.0', '1.9.9') // 1
  1. const version = wx.getSystemInfoSync().SDKVersion
  2. if (compareVersion(version, '2.3.0') >= 0) {
  3. wx.startGyroscope()
  4. } else {
  5. // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  6. wx.showModal({
  7. title: '提示',
  8. content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  9. })
  10. }

2. API 存在判断

对于新增的 API,可以通过判断该API是否存在来判断是否支持用户使用的基础库版本。例如:

  1. if (wx.startGyroscope) {
  2. wx.startGyroscope()
  3. } else {
  4. // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  5. wx.showModal({
  6. title: '提示',
  7. content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  8. })
  9. }

设置最低基础库版本

需要 iOS 6.5.8 / 安卓 6.5.7 及以上版本微信客户端支持

为便于开发者解决低版本基础库无法兼容小程序的新功能的问题,开发者可设置小程序最低基础库版本要求。

开发者可以登录小程序管理后台,进入「设置 - 基本设置 - 基础库最低版本设置」进行配置。在配置前,开发者可查看近 30 天内访问当前小程序的用户所使用的基础库版本占比,以帮助开发者了解当前用户使用的情况。

低版本兼容 - 图1

设置后,若用户基础库版本低于设置值,则无法正常打开小程序,并提示用户更新客户端版本。

低版本兼容 - 图2