Cada versão da biblioteca base exige uma versão mínima do cliente. Use verificações de compatibilidade para lidar com diferenças entre versões.
Bibliotecas base e clientes
Os recursos do miniapp dependem da versão do cliente:
Cada versão da biblioteca base requer uma versão mínima específica do cliente.
Recursos mais recentes da biblioteca base podem não funcionar em clientes antigos.
A seção Garantir compatibilidade da biblioteca base descreve como lidar com diferenças de versão. Use my.SDKVersion para obter a versão atual da biblioteca base.
Garantir compatibilidade da biblioteca base
Clientes mais antigos não suportam componentes e APIs recentes do miniapp. Trate a compatibilidade conforme necessário.
Use my.canIUse(String) para verificar a disponibilidade de recursos. Consulte a referência do my.canIUse.
Exemplos de compatibilidade
Novas APIs
Verifique se o sistema suporta uma nova API:
if (my.getLocation) {
my.getLocation();
} else {
// If you want users to experience your Mini Program on the latest client version, you can display a prompt.
my.alert({
title: 'Prompt',
content: 'The current version is too old to use this feature. Please upgrade to the latest version.'
});
}
Novos parâmetros de API
Verifique se o sistema suporta um novo parâmetro:
if (my.canIUse('getLocation.object.type')) {
// Write your subsequent processing logic here.
} else {
console.log('The current version does not support this parameter')
}
Novos valores de retorno de API
Verifique se o sistema suporta um novo valor de retorno:
if (my.canIUse('getSystemInfo.return.storage')) {
// Write your subsequent processing logic here
} else {
console.log('The current version does not support this return value')
}
Novas propriedades de componente
Novas propriedades não causam erros em clientes antigos. Implemente uma degradação elegante:
Page({
data: {
canIUse: my.canIUse('button.open-type.share')
}
})
Versões da biblioteca base
|
Versão da biblioteca base |
Versão de linha de base correspondente |
|
2.8.9 |
|
|
1.14.1 |
|
|
1.14.1 |
|
|
1.9.0 |
|
Integrar a biblioteca base
As etapas de integração variam conforme a versão da linha de base. Confirme sua versão de linha de base antes de prosseguir.
iOS
Versão de linha de base 10.2.3
As novas linhas de base do contêiner de miniapp cp_change_15200851 e 10.2.3 permitem compilar bibliotecas base do miniapp 2.0.
Use a versão de linha de base 10.2.3 para novos contêineres de miniapp.
Android
Versões de linha de base 10.1.68.7 e posteriores
Defina a instância do Provider na inicialização:
H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(),new TinyAppCenterPresetProvider());
Se o cliente usar um pacote de recursos públicos H5, herde TinyAppCenterPresetProvider e mescle o código do pacote de recursos públicos na instância da classe herdada.
Série 10.1.60 e versões de linha de base 10.1.68.6 e anteriores
-
Implemente a interface
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"; // Set the dedicated resource package for the miniapp. This ID is fixed and cannot be changed. private static final String TINY_COMMON_APP = "66666692"; // The asset folder for the preset package. private final static String NEBULA_APPS_PRE_INSTALL = "nebulaPreset" + File.separator; // A collection of preset packages. private static final Map<String, H5PresetInfo> NEBULA_LOCAL_PACKAGE_APP_IDS = new HashMap(); static { H5PresetInfo h5PresetInfo2 = new H5PresetInfo(); // The file name in the built-in folder. 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; } /** * Set the ID of the resource package that can be downgraded. */ @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; } } Baixe as bibliotecas base do miniapp correspondentes à versão do seu cliente. Copie-as para a pasta
assetda etapa anterior e renomeie-as. O caminho padrão éassets/nebulaPreset/66666692.-
Defina a instância do Provider na inicialização:
H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());NotaSe o cliente usar pacotes de recursos públicos H5, mescle o código do pacote de recursos públicos na classe de instância
H5AppCenterPresetProvider.Consulte os exemplos de código.