# 版本兼容

更新时间:2024-08-16 16:36:06

小程序的能力不断发展,旧版本的客户端无法支持新增加的能力,在使用新能力前需要做版本兼容。
可以通过以下方式进行版本兼容:

# 1 版本号比较

快手小程序基础库版本号遵循Semver规范,即Major.Minor.Patch(主版本号.次版本号.修订版本号)。
文档中会在组件,API等页面描述中带上各个功能所要求的最低基础库版本号。
开发者可以在小程序中通过调用ks.getSystemInfoSync (opens new window)获取到当前小程序运行的基础库的版本号。

版本比较代码

function compareVersion(versionA, versionB) {
  // 分割版本号为数组 [MAJOR, MINOR, PATCH]
  const splitVersion = (version) => {
    return version.split('.').map(num => parseInt(num, 10));
  };

  const aParts = splitVersion(versionA);
  const bParts = splitVersion(versionB);

  // 确保两个版本号有相同的长度,用0填充较短的部分
  const maxLength = Math.max(aParts.length, bParts.length);
  while (aParts.length < maxLength) aParts.push(0);
  while (bParts.length < maxLength) bParts.push(0);

  // 比较每一部分
  for (let i = 0; i < maxLength; i++) {
    if (aParts[i] > bParts[i]) return 1;
    if (aParts[i] < bParts[i]) return -1;
  }

  // 如果所有部分都相等,则版本号相等
  return 0;
}

// 测试函数
console.log(compareVersion('1.0.0', '2.0.0')); // 输出 -1
console.log(compareVersion('1.0.0', '1.0.0')); // 输出 0
console.log(compareVersion('1.29.0', '1.3.0')); // 输出 1
const version = ks.getSystemInfoSync()?.SDKVersion

if (compareVersion(version, '1.64.0') >= 0) {
  ks.openLocation()
} else {
  // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  ks.showModal({
    title: '提示',
    content: '当前客户端版本过低,无法使用该功能,请升级到最新版本后重试。'
  })
}

# 2 ks.canIUse

除了直接通过版本号判断,也可以通过 ks.canIUse (opens new window) 来判断是否可以在该基础库版本下直接使用。例如:

// 对象的属性或方法
ks.canIUse('console.log');
ks.canIUse('CameraContext.onCameraFrame');
ks.canIUse('CameraFrameListener.start');

// ks接口参数、回调或者返回值
ks.canIUse('getSystemInfoSync.return.safeArea.left');
ks.canIUse('getSystemInfo.success.screenWidth');
ks.canIUse('showToast.object.image');
ks.canIUse('onCompassChange.callback.direction');
ks.canIUse('request.object.method.GET');

// 组件的属性
ks.canIUse('text.selectable');
ks.canIUse('button.open-type.contact');

# 3 设置最低基础库版本

如希望全量用户都可使用小程序新功能,开发者可设置小程序最低基础库版本。

开发者可以登录小程序开发者平台 (opens new window),进入“基础设置-基本设置-账号信息”进行配置。在配置前,开发者可查看不同基础库版本对应的用户可用率,用以评估升级基础库带来的影响。

若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新快手版本

Copyright ©2024, All Rights Reserved