Integrar Aplicativos Web Progressivos com o Windows Share
Este artigo explica como integrar um PWA (Aplicativo Web Progressivo) com o recurso Windows Share. Este recurso permite que os usuários compartilhem conteúdo de um aplicativo do Windows para outro. O PWA se registra como um Destino de compartilhamento para receber e manipular arquivos compartilhados dentro do aplicativo.
O que é Destino de compartilhamento?
O Destino de compartilhamento é um recurso que foi introduzido no Windows 8 e permite que um aplicativo receba dados de outro aplicativo. O Destino de compartilhamento funciona como uma Área de Transferência, mas com conteúdo dinâmico.
Compartilhar conteúdo a partir do seu PWA
Para compartilhar conteúdo, um PWA gera conteúdo (como texto, links ou arquivos) e entrega o conteúdo compartilhado ao sistema operacional. O sistema operacional permite que o usuário decida qual aplicativo deseja usar para receber esse conteúdo. Os PWAs podem usar a API de Compartilhamento Web para acionar a exibição da Share Sheet no Windows. A API de compartilhamento Web é compatível com o Microsoft Edge e com outros navegadores baseados no Chromium.
Consulte Compartilhar conteúdo na documentação do Microsoft Edge para obter um exemplo completo de como compartilhar conteúdo a partir de um PWA.
Receber arquivos compartilhados em seu PWA
Para receber conteúdo, um PWA atua como um destino de conteúdo. O PWA deve ser registrado no sistema operacional como um destino de compartilhamento de conteúdo.
O share_target
membro deve conter as informações necessárias para que o sistema passe o conteúdo compartilhado para seu aplicativo. Considere a seguinte configuração de manifesto de exemplo share_target
:
"share_target": {
"action": "./share_target_path/?custom_param=foo",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"files": [
{
"name": "mapped_files",
"accept": ["image/jpeg"]
}
]
}
},
Quando seu aplicativo é selecionado pelo usuário como o destino para conteúdo compartilhado, o PWA é iniciado. Uma GET
solicitação HTTP é feita para a URL especificada pela propriedade action
. Os dados compartilhados são passados como os parâmetros de consulta title
, text
e url
. É feita a seguinte solicitação: /handle-shared-content/?title=shared title&text=shared text&url=shared url
.
O exemplo a seguir ilustra como registrar o trabalhador de serviço em escopo:
navigator.serviceWorker.register('scoped-service-worker.js',
{ scope: "./share_target_path/" })
O trabalhador de serviço manipula os dados de compartilhamento conforme desejado e, em seguida, atende à solicitação ou pode redirecionar a solicitação de volta para fora do caminho personalizado. O exemplo a seguir ilustra como redirecionar a solicitação de volta para fora do caminho personalizado:
self.addEventListener('fetch', (event) => {
event.respondWith((async () => {
// Read the shared data here, then
// Redirect back out of the share_target_path to the actual site
return Response.redirect(event.request.url.replace("share_target_path/", ""));
})());
return;
});
Consulte o exemplo Receber conteúdo compartilhado na documentação do Microsoft Edge para obter mais informações.
Considerações sobre o desempenho
Se o manipulador de busca for adicionado apenas para suporte de compartilhamento, possíveis problemas de latência podem surgir à medida que as solicitações são interrompidas pelo trabalhador de serviço. Para resolver esse problema, considere definir o share_target
como um pseudo subcaminho e registrar um trabalhador de serviço especificamente definido para esse caminho. Essa abordagem permite o uso de um manipulador de busca para o destino de compartilhamento sem registrar o mesmo manipulador de busca para outras chamadas.
Aplicativo PWA de exemplo
O aplicativo de exemplo de impressora de logotipo do PWA no GitHub demonstra como integrar um PWA com a Windows Share Sheet. O aplicativo permite que os usuários imprimam o logotipo do PWA em uma impressora. O aplicativo usa a Windows Share Sheet para compartilhar o logotipo com outros aplicativos.
Confira também
Windows developer