开发 指南 基础库 版本兼容
# 版本兼容
更新时间: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),进入“基础设置-基本设置-账号信息”进行配置。在配置前,开发者可查看不同基础库版本对应的用户可用率,用以评估升级基础库带来的影响。
若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新快手版本
上一篇:《介绍》
下一篇:《使用分包》
仍有疑问? 前往社区提问