Compatibilidade com ícones adaptativos em PWAs com ícones mascaráveis

Ícones do app que se adaptam às plataformas

O que são ícones mascaráveis?

Se você instalou um Progressive Web App em um smartphone Android recente, talvez perceba que o ícone aparece com um fundo branco. O Android Oreo lançou ícones adaptativos, que mostram ícones de apps em várias formas em diferentes modelos de dispositivos. Os ícones que não seguem esse novo formato recebem planos de fundo brancos.

Ícones do PWA em círculos brancos no Android
Os ícones transparentes do PWA aparecem dentro de círculos brancos no Android.

Os ícones mascaráveis são um novo formato que oferece mais controle e permitem que o Progressive Web App use ícones adaptativos. Se você fornecer um ícone mascarável, ele poderá preencher toda a forma e ter uma ótima aparência em todos os dispositivos Android. O Firefox e o Chrome recentemente adicionaram suporte a esse novo formato, e você pode adotá-lo nos seus apps.

Ícones do PWA cobrindo todo o círculo no Android
Os ícones mascaráveis cobrem o círculo inteiro.

Os ícones atuais estão prontos?

Como os ícones mascaráveis precisam oferecer suporte a várias formas, você fornece uma imagem opaca com padding, que o navegador pode cortar para a forma e o tamanho necessários. É melhor não depender de nenhuma forma específica, já que a forma final varia de acordo com o navegador e a plataforma.

Diferentes formas específicas da plataforma.

Felizmente, há uma "zona de segurança mínima" bem definida e padronizada, que todas as plataformas respeitam. As partes importantes do ícone, como o logotipo, precisam estar dentro de uma área circular no centro com um raio igual a 40% da largura. A borda externa de 10% pode ser cortada.

É possível verificar quais partes dos ícones entram na zona segura com o Chrome DevTools. Com o Progressive Web App aberto, inicie o DevTools e navegue até o painel Application. Na seção Ícones, você pode escolher Mostrar apenas a área segura mínima para ícones mascaráveis. Seus ícones serão cortados para que apenas a área segura fique visível. Se o logotipo estiver visível dentro dessa área segura, está tudo pronto.

Painel "Applications" no DevTools exibindo ícones do PWA com bordas cortadas
Painel de aplicativos.

Para testar o ícone mascarável com várias formas do Android, use a ferramenta Maskable.app criada pelo Tigre. Abra um ícone e o Maskable.app permitirá que você teste várias formas e tamanhos e possa compartilhar a visualização com outras pessoas na sua equipe.

Como faço para adotar ícones mascaráveis?

Para criar um ícone mascarável com base em um ícone atual, use o Maskable.app Editor. Faça o upload do ícone, ajuste a cor e o tamanho e exporte a imagem.

Captura de tela do Maskable.app Editor
Como criar ícones no Editor Maskable.app.

Depois de criar um ícone mascarável e testá-lo no DevTools, atualize o manifesto do app da Web para apontar para o novo recurso. O manifesto do app da Web fornece informações sobre o app em um arquivo JSON e inclui uma matriz icons.

Para a inclusão de ícones mascaráveis, o campo purpose informa ao navegador como o ícone precisa ser usado. Por padrão, os ícones terão a finalidade "any". Esses ícones serão redimensionados sobre um fundo branco no Android.

{
  …
  "icons": [
    …
    {
      "src": "path/to/regular_icon.png",
      "sizes": "196x196",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "path/to/maskable_icon.png",
      "sizes": "196x196",
      "type": "image/png",
      "purpose": "maskable" // <-- New property value `"maskable"`
    },
    …
  ],
  …
}

Os ícones mascaráveis precisam usar um valor diferente para purpose: "maskable". Isso indica que uma imagem deve ser usada com máscaras de ícones, oferecendo mais controle sobre o resultado. Dessa forma, os ícones não terão um fundo branco. Você também pode especificar várias finalidades separadas por espaço (por exemplo, "any maskable") se quiser que o ícone mascarável seja usado sem máscara em outros dispositivos.

Com isso, você pode criar seus próprios ícones mascaráveis, garantindo que o app tenha uma ótima aparência de ponta a ponta (e, no que vale, círculo a círculo, oval para oval considerados)

Agradecimentos

Este artigo foi revisado por Joe Medley.