各ベースライブラリバージョンには、最小クライアントバージョンが必要です。互換性チェックを使用して、バージョンの違いを適切に処理してください。
ベースライブラリとクライアントの関係
ミニアプリの機能は、クライアントバージョンに依存します。
-
各ベースライブラリバージョンの新機能は、特定のクライアントバージョン以降で実行する必要があります。
-
より新しいベースライブラリバージョンの一部の新機能は、以前のクライアントバージョンと互換性がありません。
バージョンの違いを処理する方法については、「ベースライブラリの互換性の確保」をご参照ください。現在のベースライブラリバージョンを取得するには、my.SDKVersion を使用します。
ベースライブラリの互換性の確保
古いクライアントは、新しいミニアプリコンポーネントと API をサポートしていません。必要に応じて互換性に対応してください。
my.canIUse(String) を使用して、機能が利用可能かどうかを確認してください。「インターフェイスの説明」をご参照ください。
互換性の例
新しい API の互換性への対応
現在のベースライブラリが新しい API をサポートしているかどうかを確認してください。
if (my.getLocation) {
my.getLocation();
} else {
// ユーザーに最新のクライアントバージョンでミニプログラムを体験してもらいたい場合は、プロンプトを表示できます。
my.alert({
title: 'Prompt',
content: 'The current version is too old to use this feature. Please upgrade to the latest version.'
});
}
新しい API パラメータの互換性への対応
新しい API パラメータがサポートされているかどうかを確認してください。
if (my.canIUse('getLocation.object.type')) {
// 後続の処理ロジックをここに記述します。
} else {
console.log('The current version does not support this parameter')
}
新しい API 戻り値の互換性への対応
新しい API 戻り値がサポートされているかどうかを確認してください。
if (my.canIUse('getSystemInfo.return.storage')) {
// 後続の処理ロジックをここに記述します
} else {
console.log('The current version does not support this return value')
}
新しいコンポーネントプロパティの互換性への対応
新しいコンポーネントプロパティは、古いクライアントでエラーを引き起こしません。グレースフルにデグレードしてください。
Page({
data: {
canIUse: my.canIUse('button.open-type.share')
}
})
ベースライブラリのバージョン
|
ベースライブラリバージョン |
対応するベースラインバージョン |
|
2.8.9 |
|
|
1.14.1 |
|
|
1.14.1 |
|
|
1.9.0 |
|
ベースライブラリの統合
統合手順は、ベースラインバージョンによって異なります。続行する前に、ベースラインバージョンを確認してください。
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インスタンスクラスにマージしてください。 -
「コード例」をご参照ください。
-