小程序的功能不断的增加,但是就版本的小红书客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容。 开发者可以通过以下方式进行低版本的兼容:
小程序基础库的版本号风格为 major.minor.patch。 文档中会在组件,API 等页面描述中带上各个功能所要求的最低基础库版本号。 开发者可以在小程序中通过调用 xhs.getSystemInfo 或者 xhs.getSystemInfoSync 获取到当前小程序运行的基础库的版本号。通过版本号比较的方式进行运行笛版本兼容逻辑。 版本号比较适用于所有情况。部分场景下也可以使用后面提到的方法完成。
注意:不要直接使用字符串比较的方法进行版本号比较。
版本号比较可以参考以下代码:
function compareVersion(v1, v2) { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.length < len) { v2.push('0') } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i]) const num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } compareVersion('1.11.0', '1.9.9')
const version = xhs.getSystemInfoSync().SDKVersion if (compareVersion(version, '1.1.0') >= 0) { xhs.openBluetoothAdapter() } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 xhs.showModal({ title: '提示', content: '当前小红书版本过低,无法使用该功能,请升级到最新小红书版本后重试。' }) }
对于新增的 API,可以通过判断该 API 是否存在来判断是否支持用户使用的基础库版本。例如:
if (xhs.openBluetoothAdapter) { xhs.openBluetoothAdapter() } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 xhs.showModal({ title: '提示', content: '当前小红书版本过低,无法使用该功能,请升级到最新小红书版本后重试。' }) }
除了直接通过版本号判断,也可以通过 xhs.canIUse 来判断是否可以在该基础库版本下直接使用。例如:
对于 API 的参数或者返回值有新增的参数,可以判断用以下代码判断。
xhs.showModal({ success: function(res) { if (xhs.canIUse('showModal.success.cancel')) { console.log(res.cancel) } } })
对于组件,新增的组件或属性在旧版本上不会被处理,不过也不会报错。如果特殊场景需要对旧版本做一些降级处理,可以这样子做。
注意:用户进入小红书时,App版本低于设置的最低基础库 小红书会自动提示升级。这个升级提示是强提示,用户不能跳过。一般严重 bug 才建议进行基础库版本设置
对于服务商,提供 API 快捷通道,进行设置
为便于开发者解决低版本基础库无法兼容小程序的新功能的问题,开发者可设置小程序最低基础库版本要求。 开发者可以登录专业号平台,进入「店铺 - 小程序基础设置 - 基础库最低版本设置」进行配置。
设置后,若用户基础库版本低于设置值,则无法正常打开小程序,并提示用户更新客户端版本。