Os contêineres H5 e os pacotes offline oferecem suporte a dois métodos de integração: AAR nativo e baseado em componentes. Os contêineres H5 permitem abrir páginas da web online no aplicativo, chamar JSAPIs nativas e personalizadas do frontend, personalizar a barra de título da página H5 e usar o kernel UC. Os pacotes offline H5 possibilitam publicar, predefinir, iniciar e atualizar pacotes offline.
Pré-requisitos
Se você utilizar o método de integração AAR nativo, conclua primeiro as etapas em Adicionar mPaaS ao seu projeto.
Se utilizar o método de integração baseado em componentes, conclua previamente o Fluxo de integração baseada em componentes.
Adicionar o SDK
AAR nativo
Para instale o componente H5 Container no projeto, use o AAR Component Management. Para obter mais informações, consulte Gerenciamento de componentes AAR.
Baseado em componentes
Instale o componente H5 Container nos projetos Portal e Bundle usando o Component Management. Para obter mais informações, consulte Gerenciar dependências de componentes.
Inicializar o mPaaS
Se utilizar o método de integração AAR nativo, inicialize o mPaaS adicionando o código a seguir à classe Application:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Initialize mPaaS
MP.init(this);
}
}
Para obter mais informações, consulte Inicializar mPaaS.
Configurar o intervalo de solicitação de pacotes de miniaplicativos
Configure o intervalo de solicitação para pacotes de miniaplicativos globalmente ou individualmente.
-
Configuração global: No projeto Android, crie um arquivo
custom_config.jsonno caminhoassets/config. Adicione o seguinte conteúdo ao arquivo:{ "value": "{\"config\":{\"al\":\"3\",\"pr\":{\"4\":\"86400\",\"common\":\"864000\"},\"ur\":\"1800\",\"fpr\":{\"common\":\"3888000\"}},\"switch\":\"yes\"}", "key": "h5_nbmngconfig"\ }O parâmetro
\"ur\":\"1800\"define o intervalo de atualização global em segundos. O valor padrão é1800. O intervalo válido varia de 0 a 86400 (24 horas). O valor 0 indica que não há limite para o intervalo de solicitação.ImportanteNão altere os outros parâmetros.
Configuração individual: Para defina o intervalo de um pacote de miniaplicativo específico, no console, acesse Add Offline Package > Extension Info e insira
{"asyncReqRate":"1800"}. Para obter mais informações, consulte a seção Extension Info em Criar um pacote offline H5.
Para verifique se a configuração entrou em vigor, abra um projeto com um pacote offline H5 integrado e filtre os logs do logcat pela palavra-chave H5BaseAppProvider. A configuração será bem-sucedida se a seguinte entrada de log for exibida.
lastUpdateTime: xxx updateRate: xxx
Usar o SDK
O contêiner H5 Nebula do mPaaS fornece a classe de interface MPNebula para gerencie operações de contêineres H5 e pacotes offline.
-
Inicie um pacote offline H5.
-
Inicie um pacote offline:
/** * Starts an offline package. * * @param appId The offline package ID. */ public static void startApp(String appId); -
Inicie um pacote offline com parâmetros de inicialização:
/** * Starts an offline package. * * @param appId The offline package ID. * @param params The startup parameters. */ public static void startApp(String appId, Bundle params);
-
-
Inicie uma página online.
-
Inicie uma página online:
/** * Starts an online URL. * * @param url The online URL. */ public static void startUrl(String url) -
Inicie uma página online com parâmetros de inicialização:
/** * Starts an online URL. * * @param url The online URL. * @param param The startup parameters. */ public static void startUrl(String url, Bundle param);
-
-
Defina um
UserAgentpersonalizado.-
Implemente um provedor para o User Agent (UA):
public class H5UaProviderImpl implements H5UaProvider { @Override public String getUa(String defaultUaStr) { // Do not modify defaultUaStr or return a result that does not contain defaultUaStr. return defaultUaStr + " AlipayClient/mPaaS"; } } -
Chame a API para defina o UA:
/** * Sets the UA. * * @param uaProvider The UA provider. The developer must implement the getUa method. */ public static void setUa(H5UaProvider uaProvider) -
Execute a seguinte configuração:
MPNebula.setUa(new H5UaProviderImpl());
-
-
Defina uma visualização de contêiner personalizada.
O contêiner oferece métodos para configure uma barra de título personalizada, menu de navegação, cabeçalho de pull-to-refresh e layout do host WebView. Para visualize um exemplo de implementação, consulte o código de amostra para contêineres H5 e pacotes offline com o método de integração AAR em Obter códigos de amostra.
-
Implemente um provedor de visualização:
public class H5ViewProviderImpl implements H5ViewProvider { @Override public H5WebContentView createWebContentView(Context context) { // Return a custom WebView host layout here. If null is returned, the default view is used. return null; } @Override public H5TitleView createTitleView(Context context) { // Return a custom title bar here. If null is returned, the default view is used. return null; } @Override public H5PullHeaderView createPullHeaderView(Context context, ViewGroup viewGroup) { // Return a custom pull-to-refresh header here. If null is returned, the default view is used. return null; } @Override public H5NavMenuView createNavMenu() { // Return a custom navigation menu here. If null is returned, the default view is used. return null; } } -
Chame a interface para defina a visualização:
/** * Sets custom container-related views, such as the title bar, menu bar, web layout, and pull-to-refresh view. * @param viewProvider The custom view provider. */ public static void setCustomViewProvider(H5ViewProvider viewProvider); -
Execute o procedimento de configuração:
MPNebula.setCustomViewProvider(new H5ViewProviderImpl());NotaPara defina uma barra de título personalizada, configure primeiro o nome do bundle. Caso contrário, os recursos necessários podem não ser encontrados.
// You must set the bundle name where the title bar resources are located. If you do not set it, the resources cannot be loaded and the title bar will not take effect. H5Utils.setProvider(H5ReplaceResourceProvider.class.getName(), new H5ReplaceResourceProvider() { @Override public String getReplaceResourcesBundleName() { return BuildConfig.BUNDLE_NAME; } }); MPNebula.setCustomViewProvider(new H5ViewProviderImpl());
-
-
Incorpore a visualização de um único contêiner em uma página.
Incorpore uma página H5 como uma visualização dentro de um contêiner usando o método síncrono ou assíncrono.
-
Método síncrono
/** * Gets the view of the H5 container. * * @param activity The page context. * @param param The startup parameters, which can include an appid or a URL. * @return The view of the H5 container. */ public static View getH5View(Activity activity, Bundle param); -
Método assíncrono
/** * Asynchronously gets the view of the H5 container. * * @param activity The page context. * @param param The startup parameters, which can include an appid or a URL. * @param h5PageReadyListener The asynchronous callback. */ public static void getH5ViewAsync(Activity activity, Bundle param, H5PageReadyListener h5PageReadyListener);NotaAntes de incorporar um contêiner por qualquer um dos métodos, obtenha as informações do pacote offline correspondente.
O método assíncrono não ocupa a thread principal nem afeta o desempenho.
-
Usar o contêiner H5
Para obter mais informações, consulte Usar o contêiner H5.
Usar pacotes offline H5
Para obter mais informações, consulte Usar pacotes offline H5.