Compartilhar via


Habilitar aplicativos para sites usando manipuladores de URI de aplicativo

Os Aplicativos para Sites associam 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 somente os proprietários de conteúdo verificados podem se registrar para um link. Os usuários poderão verificar todos os links da web para aplicativos registrados acessando Configurações > Aplicativos > Aplicativos para websites.

Importante

Começando com a atualização do Windows 10 Creators e em todas as versões do Windows 11, os links com suporte clicados no Microsoft Edge Legacy iniciarão o aplicativo correspondente. Links com suporte clicados em navegadores com suporte (por exemplo, Microsoft Edge Chromium, Firefox, Internet Explorer etc.), manterão você na experiência de navegação.

Para habilitar a vinculação da Web para o aplicativo, você precisará:

  • Identificar as 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 de pacotes do aplicativo na mesma raiz do host que a declaração do manifesto do aplicativo.
  • Gerencie a ativação no aplicativo.

Seu aplicativo precisa identificar as URIs para os sites que ele manipulará. Para fazer isso, adicione o registro de extensão Windows.appUriHandler ao arquivo de manifesto do aplicativo Package.appxmanifest.

Por exemplo, se o endereço do seu site for "msn.com", você fará a seguinte entrada no manifesto do 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 manipular links do host especificado. Se o site tiver vários endereços (por exemplo: m.example.com, www.example.com, and example.com), adicione uma entrada <uap3:Host Name=... /> separada dentro do <uap3:AppUriHandler> para cada endereço.

Associar seu aplicativo e site a um arquivo JSON

Para garantir que somente 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 de pacotes 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 de pacotes do 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. Curingas permitem que você suporte uma ampla variedade de links com um menor número de linhas de código. A integração web para aplicativos dá suporte a dois tipos de caracteres curinga no arquivo JSON.

curinga Descrição
* Representa qualquer subcadeia de caracteres
? Representa um único caractere

Por exemplo, considerando "excludePaths" : [ "/news/*", "/blog/*" ] no exemplo acima, seu aplicativo dará suporte a todos os caminhos que começam com o endereço do site (por exemplo, msn.com), exceto aqueles em /news/ e /blog/. msn.com/weather.html terá suporte, mas não msn.com/news/topnews.html.

Vários aplicativos

Se você tiver dois aplicativos que deseja vincular ao seu site, liste os nomes da família de pacotes de aplicativos em seu windows-app-web-link arquivo JSON. Ambos os aplicativos podem ter suporte. O usuário receberá a opção de escolher qual é o link padrão caso ambos estejam instalados. Se eles quiserem alterar o link padrão mais tarde, eles 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 no máximo 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 com suporte 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 todas as páginas sob esse caminho, enquanto '/news*' (nenhuma barra após 'news') inclui qualquer caminho que comece com 'news', como 'newslocal/', 'newsinternational/' e assim por diante.

Navegue até App.xaml.cs na solução do Visual Studio do aplicativo e, em OnActivated(), adicione 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

Substitua a lógica de if (rootFrame.Content == null) final por rootFrame.Navigate(deepLinkPageType, e);, conforme mostrado no exemplo acima.

Testar em uma ferramenta de validação local

Você pode testar a configuração do aplicativo e do site executando a ferramenta verificador de registro de host do aplicativo que está disponível em:

%windir%\system32\AppHostRegistrationVerifier.exe

Teste a configuração do aplicativo e do site executando esta ferramenta com os seguintes parâmetros:

AppHostRegistrationVerifier.exenome do host packagefamilyname caminho do arquivo

  • Nome do host: seu site (por exemplo, microsoft.com)
  • Nome da Família do Pacote (PFN): PFN do seu aplicativo
  • 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 ao ser carregado. Se houver um código de erro, ele não funcionará.

Você pode habilitar a seguinte chave do registro para forçar a correspondência de caminho para aplicativos carregados lateralmente como parte da validação local.

HKCU\Software\Classes\LocalSettings\Software\Microsoft\Windows\CurrentVersion\ AppModel\SystemAppData\YourApp\AppUriHandlers

Nome da chave: ForceValidation Valor: 1

Testá-lo: validação da 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 com suporte em seu site. Por exemplo, se o endereço do seu site for "msn.com", e um dos caminhos de suporte for "path1", você usará http://msn.com/path1

Verifique se o aplicativo está fechado. Pressione Chave do Windows + R para abrir a caixa de diálogo Executar e colar 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 API LaunchUriAsync. Você também pode usar essa API para testar 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 de AppUriHandlers

Essas dicas ajudarão você a aproveitar ao máximo o recurso AppUriHandlers:

  • Especifique apenas os links que seu aplicativo pode manipular.
  • Liste todos os hosts aos quais você dará suporte. Observe que www.example.com and example.com são hosts diferentes.
  • Os usuários podem escolher qual aplicativo preferem manipular 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á republicar seu arquivo JSON sem republicar seu aplicativo. Os usuários verão as alterações em 1 a 8 dias.
  • Todos os aplicativos carregados lateralmente com AppUriHandlers terão os 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 da á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.

projeto de exemplo Web para Aplicativo

registro do protocolo windows

Manipular ativação de URI