ミニプログラム機能には、クライアントからのサポートが必要です。
基本ライブラリとクライアントの関係
ミニプログラム機能には、クライアントからのサポートが必要です。
基本ライブラリの各バージョンの新機能は、特定のバージョンで実行されます。
高バージョンの基本ライブラリの一部の新機能は、低バージョンのクライアントと互換性がありません。
基本ライブラリとの互換性の方法をご参照ください。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 以前のベースラインバージョン
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"; // プリセットパッケージのアセットディレクトリ 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です。起動時に Provider インスタンスを設定します。コードサンプルは次のとおりです。
H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());説明クライアントで H5 パブリックリソースパッケージが使用されている場合は、
H5AppCenterPresetProviderのインスタンスクラスにパブリックリソースパッケージの関連コードをマージしてください。