Share via


Práticas recomendadas de desenvolvimento para aplicativos WebView2

Cada equipe de desenvolvimento segue práticas diferentes ao criar seu aplicativo. Ao criar aplicativos de produção do WebView2, recomendamos seguir essas recomendações e práticas recomendadas.

Geralmente, recomendamos usar o Runtime do Evergreen WebView2. A distribuição de runtime de versão fixa só é recomendada para aplicativos com requisitos de compatibilidade rigorosos. O runtime do Evergreen é atualizado automaticamente no cliente, de modo que os recursos e patches de segurança mais recentes estejam disponíveis para seu aplicativo WebView2. O runtime do Evergreen também requer menos espaço de armazenamento no disco do que o runtime de Versão Fixa.

Se você usar o runtime do Evergreen, antes de executar seu aplicativo WebView2, teste se o Runtime Do Evergreen WebView2 está instalado no cliente. Consulte Implantando o Runtime do Evergreen WebView2.

Executar testes de compatibilidade regularmente ao usar o Evergreen Runtime

Ao usar o Runtime do Evergreen WebView2, o runtime é atualizado automaticamente, portanto, você deve executar regularmente testes de compatibilidade. Para garantir que seu aplicativo WebView2 continue funcionando conforme o esperado, teste seu conteúdo da Web no controle WebView2 nos canais de visualização do Microsoft Edge (Beta, Dev ou Canary). Os canais de visualização também são chamados de canais insider.

As diretrizes acima são semelhantes às diretrizes para desenvolvedores Web. Para testar seu aplicativo para obter compatibilidade avançada, confira Teste de pré-lançamento usando canais de versão prévia e Auto-host implantando canais de visualização.

Para baixar os canais de visualização do Microsoft Edge, acesse Tornar-se um Microsoft Edge Insider.

Teste se as APIs mais recentes têm suporte pelo Runtime do WebView2 instalado

Para executar um aplicativo WebView2 que foi desenvolvido com uma versão específica do SDK do Webview2, o cliente deve ter uma versão compatível do WebView2 Runtime instalado. Como as APIs estão sendo adicionadas continuamente ao WebView2, novas versões do runtime também são lançadas para dar suporte às novas APIs. Use a detecção de recursos para garantir que as APIs mais recentes usadas pelo aplicativo WebView2 sejam compatíveis com o WebView2 Runtime instalado no cliente.

Se você usar o Runtime do Evergreen WebView2, há alguns cenários em que o runtime em um cliente não foi atualizado automaticamente para a versão mais recente. Por exemplo, se um cliente não tiver acesso à Internet, o runtime não será atualizado automaticamente.

Além disso, algumas políticas de grupo pausam a atualização do runtime. Quando você envia uma atualização para seu aplicativo WebView2, o aplicativo pode não funcionar se tentar chamar APIs mais recentes que não estão disponíveis no runtime instalado do cliente.

Para resolver essa situação, antes que o código chame uma API WebView2 recentemente adicionada, teste se essa API está disponível no runtime instalado do cliente. Esse teste para funcionalidades mais recentes é semelhante a outras práticas recomendadas de desenvolvimento da Web que detectam recursos com suporte antes de usar novas APIs Web. Para testar a disponibilidade da API no runtime instalado, use:

  • QueryInterface em C/C++.
  • Um try/catch bloco no .NET ou no WinUI.

Consulte Detecção de recursos para testar se o Runtime instalado dá suporte a APIs adicionadas recentemente.

Atualizar o Runtime de Versão Fixa

Se você usar o Runtime WebView2 de Versão Fixa, atualize regularmente o WebView2 Runtime empacotado com seu aplicativo, para reduzir os riscos de segurança. Ao usar conteúdo de terceiros em aplicativos Webview2, considere sempre que o conteúdo não é confiável. Consulte Modo de distribuição de versão fixa.

Gerenciar novas versões do Evergreen Runtime

Quando uma nova versão do Runtime do Evergreen WebView2 é baixada para o cliente, todos os aplicativos WebView2 que estão em execução continuam a usar a versão anterior do runtime até que o processo do navegador seja lançado. Esse comportamento permite que os aplicativos sejam executados continuamente e impede que o runtime anterior seja excluído. Para usar a nova versão do runtime, você precisa liberar todas as referências aos objetos de ambiente WebView2 anteriores ou reiniciar seu aplicativo. Na próxima vez que seu aplicativo criar um novo ambiente WebView2, o aplicativo usará a nova versão do runtime.

Quando uma nova versão do runtime está disponível, seu aplicativo pode agir automaticamente, como notificar o usuário para reiniciar o aplicativo. Para detectar que uma nova versão do runtime está disponível, você pode usar o evento add_NewBrowserVersionAvailable (Win32) ou CoreWebView2Environment.NewBrowserVersionAvailable (.NET) em seu código. Se o código lidar com a reinicialização do aplicativo, considere salvar o estado do usuário antes da saída do aplicativo WebView2.

Gerenciar o tempo de vida da pasta de dados do usuário

Os aplicativos WebView2 criam uma pasta de dados do usuário para armazenar dados, como cookies, credenciais e permissões. Depois de criar a pasta, seu aplicativo é responsável por gerenciar o tempo de vida da pasta de dados do usuário. Por exemplo, seu aplicativo deve fazer limpeza quando o aplicativo está desinstalado. Consulte Gerenciar pastas de dados do usuário.

Manipular falhas no processo de runtime

Seu aplicativo WebView2 deve escutar e manipular o ProcessFailed evento, para que o aplicativo possa se recuperar de falhas de processos de runtime que dão suporte ao processo do aplicativo WebView2.

Os aplicativos WebView2 têm suporte por uma coleção de processos de runtime que são executados junto com o processo de aplicativo. Esses processos de runtime de suporte podem falhar por vários motivos, como ficar sem memória ou ser encerrado pelo usuário. Quando um processo de runtime de suporte falha, o WebView2 notifica o aplicativo levantando o evento ProcessFailed.

Manipuladores de eventos no objeto de ambiente

Se algum dos manipuladores de eventos do aplicativo no objeto de ambiente mantiver uma referência ao objeto de ambiente e o aplicativo simplesmente liberar a referência aos manipuladores de eventos e ambiente sem remover os manipuladores de eventos, pode haver uma referência circular entre o objeto ambiente e os objetos manipuladores, que vazarão a memória.

Para evitar esse vazamento de memória:

  • Para qualquer manipulador de eventos adicionado, remova o manipulador de eventos antes de liberar o objeto de ambiente.

  • Evite manter uma referência ao objeto de ambiente em um manipulador de eventos. Em vez disso, o manipulador de eventos pode acessar o objeto de ambiente a sender partir do argumento do retorno de chamada "concluído pelo evento".

  • Se você quiser que o aplicativo mantenha uma referência a um objeto WebView2, use uma referência fraca sempre que possível.

Para qualquer aplicativo WebView2, siga nossas recomendações em Desenvolver aplicativos WebView2 seguros.