QQ小程序 低版本兼容

2020-07-08 09:13 更新

小程序的功能不斷的增加,但是舊版本的QQ客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。 開(kāi)發(fā)者可以通過(guò)以下方式進(jìn)行低版本的兼容:

1. 版本號(hào)比較

QQ客戶端和小程序基礎(chǔ)庫(kù)的版本號(hào)風(fēng)格為 Major.Minor.Patch(主版本號(hào).次版本號(hào).修訂版本號(hào))。 文檔中會(huì)在組件,API等頁(yè)面描述中帶上各個(gè)功能所要求的最低基礎(chǔ)庫(kù)版本號(hào)。 開(kāi)發(fā)者可以在小程序中通過(guò)調(diào)用 qq.getSystemInfo或者 qq.getSystemInfoSync 獲取到當(dāng)前小程序運(yùn)行的基礎(chǔ)庫(kù)的版本號(hào)。通過(guò)版本號(hào)比較的方式進(jìn)行運(yùn)行低版本兼容邏輯。 版本號(hào)比較適用于所有情況。部分場(chǎng)景下也可以使用后面提到的方法完成

注意:不要直接使用字符串比較的方法進(jìn)行版本號(hào)比較。 版本號(hào)比較可以參考以下代碼:

  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 = qq.getSystemInfoSync().SDKVersion
  2. if (compareVersion(version, '1.1.0') >= 0) {
  3. qq.openBluetoothAdapter()
  4. } else {
  5. // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦颍梢赃@樣子提示
  6. qq.showModal({
  7. title: '提示',
  8. content: '當(dāng)前QQ版本過(guò)低,無(wú)法使用該功能,請(qǐng)升級(jí)到最新QQ版本后重試。'
  9. })
  10. }

2. API 存在判斷

對(duì)于新增的 API,可以通過(guò)判斷該API是否存在來(lái)判斷是否支持用戶使用的基礎(chǔ)庫(kù)版本。例如:

  1. if (qq.openBluetoothAdapter) {
  2. qq.openBluetoothAdapter()
  3. } else {
  4. // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦?,可以這樣子提示
  5. qq.showModal({
  6. title: '提示',
  7. content: '當(dāng)前QQ版本過(guò)低,無(wú)法使用該功能,請(qǐng)升級(jí)到最新QQ版本后重試。'
  8. })
  9. }

3. qq.canIUse

除了直接通過(guò)版本號(hào)判斷,也可以通過(guò) qq.canIUse 來(lái)判斷是否可以在該基礎(chǔ)庫(kù)版本下直接使用。例如: API 參數(shù)或返回值 對(duì)于 API 的參數(shù)或者返回值有新增的參數(shù),可以判斷用以下代碼判斷。

  1. qq.showModal({
  2. success(res) {
  3. if (qq.canIUse('showModal.cancel')) {
  4. console.log(res.cancel)
  5. }
  6. }
  7. })

組件

對(duì)于組件,新增的組件或?qū)傩栽谂f版本上不會(huì)被處理,不過(guò)也不會(huì)報(bào)錯(cuò)。如果特殊場(chǎng)景需要對(duì)舊版本做一些降級(jí)處理,可以這樣子做。

  1. Page({
  2. data: {
  3. canIUse: qq.canIUse('cover-view')
  4. }
  5. })

  1. <video controls="{{!canIUse}}">
  2. <cover-view qq:if="{{canIUse}}">play</cover-view>
  3. </video>

canIUse 的數(shù)據(jù)文件隨基礎(chǔ)庫(kù)進(jìn)行更新,新版本中的新功能可能出現(xiàn)遺漏的情況,建議開(kāi)發(fā)者在使用時(shí)提前測(cè)試。

設(shè)置最低基礎(chǔ)庫(kù)版本

需要 8.0.0 及以上版本QQ客戶端支持
為便于開(kāi)發(fā)者解決低版本基礎(chǔ)庫(kù)無(wú)法兼容小程序的新功能的問(wèn)題,開(kāi)發(fā)者可設(shè)置小程序最低基礎(chǔ)庫(kù)版本要求。
開(kāi)發(fā)者可以登錄QQ小程序管理后臺(tái),進(jìn)入「設(shè)置 - 基本設(shè)置 - 基礎(chǔ)庫(kù)最低版本設(shè)置」進(jìn)行配置。在配置前,開(kāi)發(fā)者可查看近 30 天內(nèi)訪問(wèn)當(dāng)前小程序的用戶所使用的基礎(chǔ)庫(kù)版本占比,以幫助開(kāi)發(fā)者了解當(dāng)前用戶使用的情況。
設(shè)置后,若用戶基礎(chǔ)庫(kù)版本低于設(shè)置值,則無(wú)法正常打開(kāi)小程序,并提示用戶更新客戶端版本。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)