Activer les applications pour les sites web à l’aide de gestionnaires d’URI d’application

Les applications pour sites web associent votre application à un site web afin que lorsque quelqu’un ouvre un lien vers votre site web, votre application est lancée au lieu d’ouvrir le navigateur. Si votre application n’est pas installée, votre site web s’ouvre dans le navigateur comme d’habitude. Les utilisateurs peuvent approuver cette expérience, car seuls les propriétaires de contenu vérifiés peuvent s’inscrire à un lien. Les utilisateurs pourront vérifier tous leurs liens web-à-application inscrits en accédant à Settings > Apps > for websites.

Pour activer la liaison web-à-application, vous devez :

  • Identifier les URI gérés par votre application dans le fichier manifeste
  • Fichier JSON qui définit l’association entre votre application et votre site web. avec le nom de famille du package d’application à la même racine hôte que la déclaration de manifeste de l’application.
  • Gérez l’activation dans l’application.

Remarque

À compter de la mise à jour de Windows 10 Creators, les liens pris en charge cliqués dans Version antérieure de Microsoft Edge lancent l’application correspondante. Les liens pris en charge sont cliqués dans d’autres navigateurs (par exemple, Microsoft Edge Chromium, Internet Explorer, etc.), vous conservez l’expérience de navigation.

Votre application doit identifier les URI des sites web qu’elle gère. Pour ce faire, ajoutez l’inscription de l’extension Windows.appUriHandler au fichier manifeste package.appxmanifest de votre application.

Par exemple, si l’adresse de votre site web est « msn.com », vous devez effectuer l’entrée suivante dans le manifeste de votre application :

<Applications>
  <Application ... >
      ...
      <Extensions>
         <uap3:Extension Category="windows.appUriHandler">
          <uap3:AppUriHandler>
            <uap3:Host Name="msn.com" />
          </uap3:AppUriHandler>
        </uap3:Extension>
      </Extensions>
  </Application>
</Applications>

La déclaration ci-dessus inscrit votre application pour gérer les liens de l’hôte spécifié. Si votre site web a plusieurs adresses (par exemple : m.example.com, www.example.com et example.com), ajoutez une entrée distincte <uap3:Host Name=... /> à l’intérieur de chaque <uap3:AppUriHandler> adresse.

Associer votre application et votre site web à un fichier JSON

Pour vous assurer que seule votre application peut ouvrir du contenu sur votre site web, incluez le nom de famille de package de votre application dans un fichier JSON situé à la racine du serveur web ou dans le répertoire connu du domaine. Cela signifie que votre site web donne son consentement pour que les applications répertoriées ouvrent du contenu sur votre site. Vous trouverez le nom de la famille de packages dans la section Packages du concepteur de manifeste d’application.

Important

Le fichier JSON ne doit pas avoir de suffixe de fichier .json.

Créez un fichier JSON (sans l’extension de fichier .json) nommé windows-app-web-link et fournissez le nom de la famille de packages de votre application. Par exemple :

[{
  "packageFamilyName" : "Your app's package family name, e.g MyApp_9jmtgj1pbbz6e",
  "paths" : [ "*" ],
  "excludePaths" : [ "/news/*", "/blog/*" ]
 }]

Windows crée une connexion https à votre site web et recherche le fichier JSON correspondant sur votre serveur web.

Caractères génériques

L’exemple de fichier JSON ci-dessus illustre l’utilisation de caractères génériques. Les caractères génériques vous permettent de prendre en charge un large éventail de liens avec moins de lignes de code. La liaison web-à-application prend en charge deux types de caractères génériques dans le fichier JSON :

Caractère générique Description
* Représente n’importe quelle sous-chaîne
? Représente un caractère unique

Par exemple, dans "excludePaths" : [ "/news/*", "/blog/*" ] l’exemple ci-dessus, votre application prend en charge tous les chemins d’accès qui commencent par l’adresse de votre site web (par exemple, msn.com), à l’exception de ceux sous /news/ et /blog/. msn.com/weather.html sera prise en charge, mais pas msn.com/news/topnews.html.

Applications multiples

Si vous avez deux applications que vous souhaitez lier à votre site web, répertoriez les deux noms de famille de packages d’application dans votre fichier JSON windows-app-web-link . Les deux applications peuvent être prises en charge. L’utilisateur sera présenté avec un choix qui est le lien par défaut si les deux sont installés. S’ils souhaitent modifier le lien par défaut ultérieurement, ils peuvent le modifier dans Paramètres > Apps for Websites. Les développeurs peuvent également modifier le fichier JSON à tout moment et voir la modification dès le même jour, mais pas plus tard que huit jours après la mise à jour.

[{
  "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/*" ]
 }]

Pour offrir la meilleure expérience à vos utilisateurs, utilisez des chemins d’accès d’exclusion pour vous assurer que le contenu en ligne uniquement est exclu des chemins pris en charge dans votre fichier JSON.

Les chemins d’accès exclus sont vérifiés en premier et s’il existe une correspondance, la page correspondante est ouverte avec le navigateur au lieu de l’application désignée. Dans l’exemple ci-dessus, '/news/*' inclut toutes les pages sous ce chemin tandis que '/news*' (aucune barre oblique 'news') inclut tous les chemins sous 'news*' tels que 'newslocal/', 'newsinternational/', etc.

Accédez à App.xaml.cs dans la solution Visual Studio de votre application et dans OnActivated() ajoutez la gestion du contenu lié. Dans l’exemple suivant, la page ouverte dans l’application dépend du chemin d’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();
}

Important : veillez à remplacer la logique rootFrame.Navigate(deepLinkPageType, e); finale if (rootFrame.Content == null) par celle illustrée dans l’exemple ci-dessus.

Testez-le : outil de validation local

Vous pouvez tester la configuration de votre application et de votre site web en exécutant l’outil de vérificateur d’inscription de l’hôte d’application disponible dans :

%windir%\system32\AppHostRegistrationVerifier.exe

Testez la configuration de votre application et de votre site web en exécutant cet outil avec les paramètres suivants :

AppHostRegistrationVerifier.exe nom d’hôte packagefamilyname filepath

  • Nom d’hôte : Votre site web (par exemple, microsoft.com)
  • Nom de famille de package (PFN) : NOM PFN de votre application
  • Chemin d’accès au fichier : fichier JSON pour la validation locale (par exemple, C :\SomeFolder\windows-app-web-link)

Si l’outil ne retourne rien, la validation fonctionne sur ce fichier lors du chargement. S’il existe un code d’erreur, il ne fonctionnera pas.

Vous pouvez activer la clé de Registre suivante pour forcer la correspondance des chemins d’accès pour les applications chargées côté dans le cadre de la validation locale :

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

Nom de clé : ForceValidation Valeur : 1

Testez-le : validation web

Fermez votre application pour vérifier que l’application est activée lorsque vous cliquez sur un lien. Ensuite, copiez l’adresse de l’un des chemins pris en charge dans votre site web. Par exemple, si l’adresse de votre site web est « msn.com », et que l’un des chemins d’accès de support est « path1 », vous devez utiliser http://msn.com/path1

Vérifiez que votre application est fermée. Appuyez sur Touche Windows + R pour ouvrir la boîte de dialogue Exécuter et coller le lien dans la fenêtre. Votre application doit se lancer au lieu du navigateur web.

En outre, vous pouvez tester votre application en la lançant à partir d’une autre application à l’aide de l’API LaunchUriAsync . Vous pouvez également utiliser cette API pour tester sur les téléphones.

Si vous souhaitez suivre la logique d’activation du protocole, définissez un point d’arrêt dans le gestionnaire d’événements OnActivated .

Conseils AppUriHandlers :

  • Veillez à spécifier uniquement les liens que votre application peut gérer.
  • Répertoriez tous les hôtes que vous allez prendre en charge. Notez que www.example.com et example.com sont des hôtes différents.
  • Les utilisateurs peuvent choisir l’application qu’ils préfèrent gérer les sites web dans Paramètres.
  • Votre fichier JSON doit être chargé sur un serveur https.
  • Si vous devez modifier les chemins que vous souhaitez prendre en charge, vous pouvez republier votre fichier JSON sans republier votre application. Les utilisateurs verront les modifications en 1 à 8 jours.
  • Toutes les applications chargées de manière indépendante avec AppUriHandlers auront des liens validés pour l’hôte lors de l’installation. Vous n’avez pas besoin d’avoir un fichier JSON chargé pour tester la fonctionnalité.
  • Cette fonctionnalité fonctionne chaque fois que votre application est une application UWP lancée avec LaunchUriAsync ou une application de bureau Windows lancée avec ShellExecuteEx. Si l’URL correspond à un gestionnaire d’URI d’application inscrit, l’application est lancée au lieu du navigateur.

Voir aussi

L’exemple d’exemple de projetwindows.protocol registrationHandle URI ActivationAssociation Launch sample montre comment utiliser l’API LaunchUriAsync().