Este tópico responde a perguntas comuns sobre a integração com Android e apresenta soluções.
Qual é a diferença entre handleEvent e interceptEvent em uma API JavaScript personalizada?
Resposta: Para escutar eventos processados pelo contêiner, adicione a API JavaScript personalizada a handleEvent e retorne true. Retornar true interrompe a propagação do evento. Retornar false permite que o evento se propague para outros plugins. Para escutar os demais eventos do contêiner, adicione a API JavaScript personalizada a interceptEvent.
Por que adicionar um evento em onPrepare se ele já foi incluído na API JavaScript personalizada?
Resposta: Ao crie uma API JavaScript personalizada, adicione um evento usando config.setEvents("event");. No entanto, os plugins do contêiner usam carregamento lazy loading e são carregados apenas quando uma página é criada. A chamada externa config.setEvents injeta os nomes dos eventos a serem escutados, mas o objeto do plugin correspondente só é instanciado após uma chamada JavaScript (JS). O despacho de eventos para o plugin instanciado usa os eventos definidos no método onPrepare do próprio plugin. Portanto, garanta que os eventos em config.setEvents("event") correspondam aos eventos definidos internamente no método onPrepare.
Quais são as diferenças entre page, session e service no registro de plugins de API JavaScript personalizada?
Resposta: Uma página corresponde a uma WebView. Uma sessão corresponde a um objeto App de um aplicativo mPaaS. Um serviço é um singleton global.
No registro em nível de página, o sistema cria uma nova instância do plugin sempre que uma WebView é iniciada. O método onRelease do plugin é chamado quando a WebView é destruída.
No registro em nível de sessão, um novo plugin é criado cada vez que um objeto App é criado.
No nível de serviço, o plugin é criado apenas uma vez, na primeira abertura do contêiner.
A verificação de assinatura valida a source do pacote offline ou verifica a integridade?
Resposta: Na plataforma de publicação de pacotes offline, ao configurar uma chave privada, a plataforma inclui informações de assinatura no arquivo AMR distribuído. Essa assinatura é o texto cifrado gerado pela criptografia do valor de hash do pacote offline com a chave privada. Durante a verificação, o sistema usa a chave pública pré-configurada no projeto para validar a assinatura. Esse processo descriptografa o texto cifrado para recuperar o valor de hash e o compara com um hash calculado localmente para o pacote offline. A correspondência confirma a assinatura e garante tanto a integridade do conteúdo quanto a source correta do pacote offline.
Por que a barra de progresso permanece visível ao abrir um pacote offline?
Resposta: Isso ocorre quando há falha no carregamento dos recursos offline e a página retorna ao modo online. Nesse cenário de fallback, o contêiner H5 força a exibição da barra de progresso. Não é possível ocultar a barra definindo o parâmetro de inicialização SHOW_PROGRESS.