Habilitar aplicativos para sites usando manipuladores de URI de aplicativo
O Apps for Websites associa seu aplicativo a um site para que, quando alguém abrir um link para seu site, seu aplicativo seja iniciado em vez de abrir o navegador. Se seu aplicativo não estiver instalado, seu site será aberto no navegador como de costume. Os usuários podem confiar nessa experiência porque apenas os proprietários de conteúdo verificado podem se registrar para um link. Os usuários poderão verificar todos os seus links registrados da Web para o aplicativo acessando Configurações > Aplicativos > Aplicativos para sites.
Importante
A partir da atualização do Windows 10 Creators e em todas as versões do Windows 11, os links suportados clicados no Microsoft Edge Legacy iniciarão o aplicativo correspondente. Os links suportados clicados em navegadores suportados (por exemplo, Microsoft Edge Chromium, Firefox, Internet Explorer, etc.) irão mantê-lo na experiência de navegação.
Para habilitar a vinculação da Web ao aplicativo, você precisará:
- Identifique os URIs que seu aplicativo manipulará no arquivo de manifesto
- Um arquivo JSON que define a associação entre seu aplicativo e seu site. com o Nome da Família do Pacote da aplicação na mesma raiz do host que a declaração de manifesto da aplicação.
- Manipule a ativação no aplicativo.
Registre-se para manipular links http e https no manifesto do aplicativo
Seu aplicativo precisa identificar os URIs dos sites que ele manipulará. Para fazer isso, adicione o registo da extensão Windows.appUriHandler ao ficheiro de manifesto do seu aplicativo Package.appxmanifest.
Por exemplo, se o endereço do seu site for "msn.com", você faria a seguinte entrada no manifesto do seu aplicativo:
<Applications>
<Application ... >
...
<Extensions>
<uap3:Extension Category="windows.appUriHandler">
<uap3:AppUriHandler>
<uap3:Host Name="msn.com" />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>
</Application>
</Applications>
A declaração acima registra seu aplicativo para lidar com links do host especificado. Se o seu site tiver vários endereços (por exemplo: m.example.com, www.example.com, and example.com), adicione uma entrada de <uap3:Host Name=... />
separada dentro do <uap3:AppUriHandler>
para cada endereço.
Associe seu aplicativo e site a um arquivo JSON
Para garantir que apenas seu aplicativo possa abrir conteúdo em seu site, inclua o nome da família de pacotes do aplicativo em um arquivo JSON localizado na raiz do servidor Web ou no diretório conhecido no domínio. Isso significa que seu site dá consentimento para que os aplicativos listados abram conteúdo em seu site. Você pode encontrar o nome da família do pacote na seção Pacotes no designer de manifesto do aplicativo.
Importante
O arquivo JSON não deve ter um sufixo de arquivo .json.
Crie um arquivo JSON (sem a extensão de arquivo .json) chamado windows-app-web-link e forneça o nome da família do pacote do seu aplicativo. Por exemplo:
[{
"packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
"paths" : [ "*" ],
"excludePaths" : [ "/news/*", "/blog/*" ]
}]
O Windows fará uma conexão https com seu site e procurará o arquivo JSON correspondente em seu servidor web.
Curingas
O exemplo de arquivo JSON acima demonstra o uso de curingas. Os curingas permitem que você suporte uma ampla variedade de links com menos linhas de código. A vinculação Web-to-app suporta dois tipos de curingas no arquivo JSON:
curinga | Descrição |
---|---|
* | Representa qualquer substring |
? | Representa um único caractere |
Por exemplo, dado "excludePaths" : [ "/news/*", "/blog/*" ]
no exemplo acima, seu aplicativo suportará todos os caminhos que começam com o endereço do seu site (por exemplo, msn.com), exceto aqueles em /news/
e /blog/
.
msn.com/weather.html será apoiado, mas não msn.com/news/topnews.html.
Várias aplicações
Se você tiver dois aplicativos que gostaria de vincular ao seu site, liste ambos os nomes de família do pacote de aplicativos em seu windows-app-web-link arquivo JSON. Ambos os aplicativos podem ser suportados. O usuário será apresentado com uma escolha de qual é o link padrão se ambos estiverem instalados. Se quiserem alterar o link padrão mais tarde, poderão alterá-lo em Configurações > Aplicativos para Sites. Os desenvolvedores também podem alterar o arquivo JSON a qualquer momento e ver a alteração no mesmo dia, mas o mais tardar oito dias após a atualização.
[{
"packageFamilyName": "Your apps's package family name, e.g MyApp_9jmtgj1pbbz6e",
"paths": [ "*" ],
"excludePaths" : [ "/news/*", "/blog/*" ]
},
{
"packageFamilyName": "Your second app's package family name, for example, MyApp2_8jmtgj2pbbz6e",
"paths": [ "/example/*", "/links/*" ]
}]
Para fornecer a melhor experiência para seus usuários, use caminhos de exclusão para garantir que o conteúdo somente online seja excluído dos caminhos suportados em seu arquivo JSON.
Os caminhos de exclusão são verificados primeiro e, se houver uma correspondência, a página correspondente será aberta com o navegador em vez do aplicativo designado. No exemplo acima, '/news/*' inclui quaisquer páginas sob esse caminho, enquanto '/news*' (sem barra antes de 'news') inclui quaisquer caminhos sob 'news*', como 'newslocal/', 'newsinternational/', e assim por diante.
Manipular links na Ativação para vincular ao conteúdo
Navegue até App.xaml.cs na solução Visual Studio do seu aplicativo e em OnActivated() adicionar manipulação para conteúdo vinculado. No exemplo a seguir, a página aberta no aplicativo depende do caminho do URI:
protected override void OnActivated(IActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
...
}
// Check ActivationKind, Parse URI, and Navigate user to content
Type deepLinkPageType = typeof(MainPage);
if (e.Kind == ActivationKind.Protocol)
{
var protocolArgs = (ProtocolActivatedEventArgs)e;
switch (protocolArgs.Uri.AbsolutePath)
{
case "/":
break;
case "/index.html":
break;
case "/sports.html":
deepLinkPageType = typeof(SportsPage);
break;
case "/technology.html":
deepLinkPageType = typeof(TechnologyPage);
break;
case "/business.html":
deepLinkPageType = typeof(BusinessPage);
break;
case "/science.html":
deepLinkPageType = typeof(SciencePage);
break;
}
}
if (rootFrame.Content == null)
{
// Default navigation
rootFrame.Navigate(deepLinkPageType, e);
}
// Ensure the current window is active
Window.Current.Activate();
}
Importante
Certifique-se de substituir a lógica de if (rootFrame.Content == null)
final por rootFrame.Navigate(deepLinkPageType, e);
como mostrado no exemplo acima.
Teste em uma ferramenta de validação local
Você pode testar a configuração do seu aplicativo e site executando a ferramenta de verificação de registro do host do aplicativo, que está disponível em:
%windir%\system32\AppHostRegistrationVerifier.exe
Teste a configuração do seu aplicativo e site executando essa ferramenta com os seguintes parâmetros:
AppHostRegistrationVerifier.exehostname packagefamilyname filepath
- Nome do host: Seu site (por exemplo, microsoft.com)
- Nome da família do pacote (PFN): PFN da sua aplicação
- Caminho do arquivo: O arquivo JSON para validação local (por exemplo, C:\SomeFolder\windows-app-web-link)
Se a ferramenta não retornar nada, a validação funcionará nesse arquivo quando feito o carregamento. Se houver um código de erro, ele não funcionará.
Você pode habilitar a seguinte chave do registo para forçar a correspondência de caminho para aplicativos de carregamento lateral como parte da validação local.
HKCU\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\ AppModel\SystemAppData\YourApp\AppUriHandlers
Nome da chave: ForceValidation
Valor: 1
Teste: Validação Web
Feche seu aplicativo para verificar se o aplicativo está ativado quando você clica em um link. Em seguida, copie o endereço de um dos caminhos suportados no seu site. Por exemplo, se o endereço do seu site for "msn.com" e um dos caminhos de suporte for "path1", você usaria http://msn.com/path1
Verifique se seu aplicativo está fechado. Pressione tecla Windows + R para abrir a caixa de diálogo Executar e cole o link na janela. Seu aplicativo deve ser iniciado em vez do navegador da Web.
Além disso, você pode testar seu aplicativo iniciando-o de outro aplicativo usando a LaunchUriAsync API. Você também pode usar essa API para testar em telefones.
Se você quiser seguir a lógica de ativação do protocolo, defina um ponto de interrupção no manipulador de eventos OnActivated.
Dicas do AppUriHandlers
Estas dicas ajudarão você a aproveitar ao máximo o recurso AppUriHandlers:
- Certifique-se de especificar apenas os links que seu aplicativo pode manipular.
- Liste todos os anfitriões que irá apoiar. Observe que www.example.com and example.com são hosts diferentes.
- Os usuários podem escolher qual aplicativo preferem lidar com sites em Configurações.
- Seu arquivo JSON deve ser carregado em um servidor https.
- Se você precisar alterar os caminhos aos quais deseja dar suporte, poderá publicar novamente seu arquivo JSON sem republicar seu aplicativo. Os usuários verão as alterações em 1-8 dias.
- Todas as aplicações carregadas lateralmente com AppUriHandlers terão links validados para o host durante a instalação. Você não precisa ter um arquivo JSON carregado para testar o recurso.
- Esse recurso funciona sempre que seu aplicativo é um aplicativo UWP iniciado com LaunchUriAsync ou um aplicativo de área de trabalho do Windows iniciado com ShellExecuteEx. Se a URL corresponder a um manipulador de URI de aplicativo registrado, o aplicativo será iniciado em vez do navegador.
Conteúdo relacionado
Windows developer