ミニプログラムの機能は、クライアントのサポートに依存します。
ベースライブラリとクライアントの連携
ミニプログラムの機能は、クライアントのサポートに依存します:
ベースライブラリのバージョンの新機能は、実行するために特定の最小クライアントバージョンを必要とします。
新しいベースライブラリバージョンの一部の新機能は、古いクライアントバージョンと互換性がありません。
ベースライブラリの互換性の詳細については、「ベースライブラリの互換性の確保」をご参照ください。現在のベースライブラリのバージョン番号は my.SDKVersion を使用して確認できます。
互換性のあるベースライブラリ
ミニプログラムのコンポーネントと API 機能は継続的に改善されています。古いクライアントバージョンではこれらの新機能がサポートされていないため、互換性の問題に対応する必要があります。
my.canIUse(String) インターフェイスを使用して互換性を確認できます。詳細については、「API リファレンス」をご参照ください。
互換性の例
新しい 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')
}
})ベースライブラリのバージョン
ベースライブラリのバージョン | ベースライブラリとそのベースラインバージョン |
2.8.9 |
|
1.14.1 | 10.1.68 |
1.14.1 | 10.1.60 |
1.9.0 | 10.1.32 |
ベースライブラリの統合ガイド
ベースラインバージョンが異なると、統合方法も異なります。ベースライブラリを統合する前に、ご利用のベースラインバージョンを確認してください。
iOS
ベースラインバージョン 10.2.3
ミニプログラムの新しいコンテナーのベースライン cp_change_15200851 および 10.2.3 は、ミニプログラムベースライブラリ 2.0 のビルドをサポートします。
ミニプログラムの新しいコンテナーでは、ベースラインバージョン 10.2.3 を優先的に使用することを推奨します。
Android
ベースラインバージョン 10.1.68.7 以降
起動時にプロバイダーインスタンスを設定できます。以下にコード例を示します:
H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(),new TinyAppCenterPresetProvider());クライアントが H5 公共リソースパッケージを使用する場合、TinyAppCenterPresetProvider クラスを継承し、公共リソースパッケージに関連するコードを継承したクラスのインスタンスにマージする必要があります。
10.1.60 シリーズのベースラインバージョンおよびバージョン 10.1.68.6 以前
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; } }クライアントの統合バージョンに対応するミニプログラムのベースライブラリをダウンロードします。ベースライブラリを前の手順で指定した
assetフォルダにコピーし、名前を変更します。前の手順のコード例に基づくと、ミニプログラムのベースライブラリのパスはassets/nebulaPreset/66666692です。起動時にプロバイダーインスタンスを設定できます。以下にコード例を示します:
H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());説明クライアントが H5 公共リソースパッケージを使用する場合、公共リソースパッケージに関連するコードを
H5AppCenterPresetProviderのインスタンスクラスにマージする必要があります。詳細については、「コード例」をご参照ください。