全部產品
Search
文件中心

Mobile Platform as a Service:小程式基礎庫說明

更新時間:Jul 13, 2024

小程式能力需要用戶端來支撐:

基礎庫與用戶端的關係

小程式能力需要用戶端來支撐:

  • 每一版基礎庫新增能力都需要運行在特定版本及以上的用戶端中。

  • 高版本基礎庫的某些新能力無法相容低版本用戶端。

關於基礎庫相容方法,參見 相容基礎庫。您可以通過 my.SDKVersion 查看當前基礎庫版本號碼。

相容基礎庫

現階段,小程式組件和 API 能力正在逐步完善和豐富,但是老版本用戶端並不支援這些新增的能力,因此建議開發人員做對應的相容性處理。

您可通過介面 my.canIUse(String) 實現相容性判斷,詳見 介面說明

相容樣本

新增 API 相容性處理

對於新增 API,可以參照下面的代碼來判斷當前基礎庫是否支援該 API:

if (my.getLocation) {
    my.getLocation();
} else {
// 如果希望使用者在最新版本的用戶端上體驗您的小程式,可以這樣提示
  my.alert({
    title: '提示',
    content: '目前的版本過低,無法使用此功能,請升級最新版本'
  });
}

API 新增參數相容性處理

對於 API 新增參數,可通過如下方式判斷是否支援,並寫入您的後續處理方式:

if (my.canIUse('getLocation.object.type')) {
    // 在此處寫入您的後續處理方式
} else {
    console.log('目前的版本不支援該參數')
}

API 新增傳回值相容性處理

對於 API 新增傳回值,可通過如下方式判斷是否支援,並寫入您的後續處理方式:

if (my.canIUse('getSystemInfo.return.storage')) {
    // 在此處寫入您的後續處理方式
} else {
    console.log('目前的版本不支援該傳回值')
}

組件新增屬性相容性處理

組件新增屬性在舊版本用戶端上無法實現,但也不會報錯。若要對屬性做降級處理可參見以下代碼:

Page({
    data: {
        canIUse: my.canIUse('button.open-type.share')
    }
})

基礎庫版本

基礎庫版本

基礎庫對應基準版本

1.9.0

10.1.32

下載地址

1.14.1

10.1.60

下載地址

基礎庫整合說明

iOS

iOS 中無需進行基礎庫整合。

Android

由於基準版本的迭代,不同的基準版本需要採用不同的整合基礎庫的方式。在整合基礎庫前,請確認您的基準版本。

10.1.68.7 及以後的基準版本

在啟動時設定該 Provider 執行個體。範例程式碼如下:

H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(),new TinyAppCenterPresetProvider());
說明

如果用戶端中有使用 H5 公用資源套件,需要繼承 TinyAppCenterPresetProvider 類,並將公用資源套件相關代碼合并至繼承的類的執行個體中。

10.1.60 系列、10.1.68.6 及以前的基準版本

  1. 實現 H5AppCenterPresetProvider 介面類。程式碼範例如下:

     package com.mpaas.demo.nebula;
    
     import com.alipay.mobile.nebula.appcenter.H5PresetInfo;
     import com.alipay.mobile.nebula.appcenter.H5PresetPkg;
     import com.alipay.mobile.nebula.provider.H5AppCenterPresetProvider;
    
     import java.io.File;
     import java.io.InputStream;
     import java.util.HashMap;
     import java.util.HashSet;
     import java.util.Map;
     import java.util.Set;
    
     public class H5AppCenterPresetProviderImpl implements H5AppCenterPresetProvider {
         private static final String TAG = "H5AppCenterPresetProviderImpl";
    
         // 設定小程式專用資源包,此 ID 固定,不可設定其他值
         private static final String TINY_COMMON_APP = "66666692";
    
         // 預置包的 asset 目錄
         private final static String NEBULA_APPS_PRE_INSTALL = "nebulaPreset" + File.separator;
    
         // 預置包集合
         private static final Map<String, H5PresetInfo> NEBULA_LOCAL_PACKAGE_APP_IDS = new HashMap();
    
         static {
    
             H5PresetInfo h5PresetInfo2 = new H5PresetInfo();
             // 內建目錄的檔案名稱
             h5PresetInfo2.appId = TINY_COMMON_APP;
             h5PresetInfo2.version = "1.0.0.0";
             h5PresetInfo2.downloadUrl = "";
    
             NEBULA_LOCAL_PACKAGE_APP_IDS.put(TINY_COMMON_APP, h5PresetInfo2);
    
         }
    
         @Override
         public Set<String> getCommonResourceAppList() {
             Set<String> appIdList = new HashSet<String>();
             appIdList.add(getTinyCommonApp());
             return appIdList;
         }
    
         @Override
         public H5PresetPkg getH5PresetPkg() {
             H5PresetPkg h5PresetPkg = new H5PresetPkg();
             h5PresetPkg.setPreSetInfo(NEBULA_LOCAL_PACKAGE_APP_IDS);
             h5PresetPkg.setPresetPath(NEBULA_APPS_PRE_INSTALL);
             return h5PresetPkg;
         }
    
         /**
          * 設定可以降級的資源套件 ID
          */
         @Override
         public Set<String> getEnableDegradeApp() {
             return null;
         }
    
         @Override
         public String getTinyCommonApp() {
             return TINY_COMMON_APP;
         }
    
         @Override
         public InputStream getPresetAppInfo() {
             return null;
         }
    
         @Override
         public InputStream getPresetAppInfoObject() {
             return null;
         }
     }
  2. 根據用戶端整合的版本下載相應的小程式基礎庫,將基礎庫複製到上一步中指定的 asset 目錄下並重新命名。基於上一步的程式碼範例,小程式基礎庫路徑為assets/nebulaPreset/66666692

  3. 在啟動時設定該 Provider 執行個體。程式碼範例如下:

     H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());
    說明

    • 如果用戶端中有使用 H5 公用資源套件,請將公用資源套件相關代碼合并至該 H5AppCenterPresetProvider 的執行個體類中。

    • 如有更多問題,參見 程式碼範例