Categorias
PWA - Progressive web apps WordPress

Editando o web app manifest com o plugin de PWA para WordPress

Nesse post vamos ver como editar as propriedades do web app manifest json com o plugin de PWA oficial do google. No meu canal do YouTube recentemente fiz um vídeo falando sobre o plugin, e como transformar seu site WordPress em uma PWA. Nesse vídeo vamos ver como podemos alterar algumas propriedades via código.

Se você ainda não conhece o plugin, tem um post no blog sobre o o plugin.

Página do plugin PWA para WordPress

Utilizando o plugin temos dois caminhos criar um mini plugin ou adicionar uma função no functions.php do nosso tema. Para esse tutorial vamos utilizar o arquivo functions.php.

Um exemplo básico podemos alterar o short_name do nosso manifest.json essa propriedade pode ter no máximo 12 caracteres por padrão ela ler o título do site, caso tenha um título maior que 12 caracteres não teremos um manifest json válido para resolver esse problema adicionamos o seguinte código em nosso arquivo functions.php de nosso tema:

add_filter( 'web_app_manifest', function( $manifest ) { $manifest['short_name'] = 'Shortness'; return $manifest; } );

No código acima adicionamos um filtro na chamada da função web_app_manifest e interceptamos o array com as propriedades do manifest.json e alteramos o elemento responsável pela propriedade short_name.

O segundo exemplo é um pouco mais complexo pois vamos acessar a lista de ícones de nossa aplicação. Recentemente o lighthouse adicionou em sua auditoria a validação para maskable icons e ainda não saiu uma nova versão com essa propriedade, pode ser que no futuro temos essa propriedade disponível mas por enquanto que a atualização não sai podemos ver como editar o nosso manifest.json e corrigir esse problema, para isso vamos adicionar o seguinte código em nosso functions.php:

add_filter( 'web_app_manifest', function( $manifest ) { $manifest['icons'] = array_map( function ( $icon ) { if ( ! isset( $icon['purpose'] ) ) { $icon['purpose'] = 'any maskable'; } return $icon; }, $manifest['icons'] ); return $manifest; } );

Novamente adicionamos um filtro na função “web_app_manifest” ela recebe um parâmetro $manifest um array que contém as configurações do web app manifest. Assim conseguimos acessar o item do array com índice ‘icons’ e adicionamos uma nova propriedade ‘purpose’ atrelada ao ícone e por fim retornamos o manifest com os novos valores.

Propriedades

O manifest json é formado com os seguintes valores por padrão:

  • name: o título do site vindo da função get_option('blogname')
  • short_name: copia do título do site não maior que 12 caracteres
  • description: tag line do site vindo da função get_option('blogdescription')
  • lang: o idioma do site por get_bloginfo( 'language' )
  • dir: a direção de leitura do site is_rtl()
  • start_url: a home da aplicação get_home_url()
  • theme_color: vindo do background customizado via get_background_color()
  • background_color: também vindo do background customizado
  • displayminimal-ui é o valor padrão.
  • icons: os ícones do site via get_site_icon_url()

Todos os valores mencionados anteriormente podem ser alterados com a inclusão de filtros que vimos anteriormente. Então ficamos por aqui com esse post outro tipo de customização que conseguimos fazer com o plugin é a parte de estratégias de cache para isso vou dedicar um segundo post para entrar em mais detalhes. Mais posts sobre WordPress confiram a página da categoria.

Categorias
PWA - Progressive web apps

Novidades no Web app manifest: app shortcuts

Já anunciado nos eventos MSbuild e Web.dev live web app manifest tem algumas novas funcionalidades. Já nas versões 84 do Chrome Mobile e 85 para desktop agora temos a possibilidade de adicionar atalhos dentro de nossa aplicações com manifest.json.

Esse recursos para você usuário Apple, já era comum em apps nativos quando o usuário pressionava e segurava o ícone do aplicativo opções dentro do app eram exibidas. Como na imagem a seguir:

Exemplo de app shortcuts nativos no iOS

O recursos é ideal quando você deseja redirecionar usuários para funcionalidades chave de sua aplicação, navegação principal, buscas ou atividade de entrada de dados. Atualmente esse recurso pode ser implementado em Progressive Web apps em dispositivos Android e Windows desktop com Chrome e Edge o esse recurso em inglês é chamado de “app shortcuts” e conseguimos adicionar essa funcionalidade através da propriedade shortcuts.

Implementação

Para adicionar app shortcuts em nossa PWA precisamos adicionar a seguinte propriedade “shortcuts” em nosso manifest.json:

"shortcuts": [ { "name": "Abrir Contatos", "short_name": "Contatos", "description": "Visualize a lista de contatos cadastrados", "url": "/contatos", "icons": [ { "src": "//contatos.png", "sizes": "192x192" } ] }, ]

Shortcuts espera um array de atalhos com as seguintes propriedades:

  • name: nome mais descritivo
  • short_name(opcional): nome alternativo para ser usado em áreas de espaço limitado.
  • description(opcional): descrição do app pode ser utilizado pelo OS e tecnologias assistivas no futuro.
  • url: a url a qual o App irá abrir. Essa URL precisa estar no escopo do manifest.json para isso precisa ser uma URL relativa.
  • icons: um array de ícones para o atalho com as propriedades: src, sizes e type(opcional).

SVG não são suportados para ícones utilize para esse caso PNG. Os tamanhos esperados são 36×36 48×48, 72×72, 96×96, 144×144 e 192×192 pixels.

Caso queira testa os seus apps shortcuts eles estarão visíveis no devtools do chrome ou edge na aba de aplicação dentro da seção do manifest, como podemos ver na imagem a seguir:

Boas práticas

Agora que sabemos como implementar atalhos em nossa pwa vamos falar sobre algumas boas práticas:

  • Ordene os app shortcuts por prioridades
  • Utiliza nomes distintos para seus atalhos
  • Mesure o uso dos atalhos via google analytics exemplo “/contatos?utm_source=homescreen”

Para finalizar vamos dar uma olhada em nosso código do manifest.json completo:

{ "name": "Tutoriais Fellyph Web APIs", "display": "standalone", "start_url": "/", "short_name": "Web APIs", "theme_color": "#DA2461", "description": "Essa é uma aplicação de teste", "orientation": "any", "background_color": "#DA2461", "icons": [ { "src": "assets/icons/icon_512.png", "sizes": "512x512" }, { "src": "assets/icons/icon_192.png", "sizes": "192x192" } ], "shortcuts": [ { "name": "Geo Location API", "short_name": "Geo API", "description": "Acesse exemplos de geo localiização", "url": "/01_geolocation/01-example-geolocation-final.html", "icons": [ { "src": "//icons/gelocalizacao.png", "sizes": "192x192" } ] }, { "name": "Fetch API", "short_name": "Fecth API", "description": "Acesse exemplos utilizando a fetch api", "url": "/02_fetch_api/01-example-xmlhttp-request-final.html", "icons": [ { "src": "//icons/fetch.png", "sizes": "192x192" } ] }, { "name": "IndexedDB API", "short_name": "IndexedDB", "description": "Acesse exemplos utilizando IndexedDB", "url": "/03_indexedDB/01-indexedDB-events.html", "icons": [ { "src": "//icons/indexed.png", "sizes": "192x192" } ] } ] }

Fiz um pequeno texto com a aplicação que estamos desenvolvendo no curso de PWA e no windows o resultado será o seguinte:

Como podemos ver no screenshot no menu de opções temos os atalhos que definimos em nosso web app manifest.

Publiquei um post recentemente sobre o recurso em meu canal do youtube:

Então é isso pessoal o recurso novo nem todos os sistemas operacionais, windows e android já adicionaram o suporte agora só falta o suporte no iOS e MacOS. Para ler mais posts sobre PWA acesse a página da categoria PWA e até o próximo post.