Partager via


Gérer l’activation de l’URI

Découvrez comment inscrire une application pour devenir le gestionnaire par défaut d’un nom de schéma URI (Uniform Resource Identifier). Les applications de bureau Windows et les applications de plateforme Windows universelle (UWP) peuvent s’inscrire pour être un gestionnaire par défaut pour un nom de schéma d’URI. Si l’utilisateur choisit votre application comme gestionnaire par défaut pour un nom de schéma d’URI, votre application est activée chaque fois que ce type d’URI est lancé.

Nous vous recommandons de vous inscrire uniquement pour un nom de schéma d’URI si vous prévoyez de gérer tous les lancements d’URI pour ce type de schéma d’URI. Si vous choisissez d’inscrire un nom de schéma d’URI, vous devez fournir à l’utilisateur final les fonctionnalités attendues lorsque votre application est activée pour ce schéma d’URI. Par exemple, une application qui est enregistrée pour le schéma URI mailto: doit ouvrir un nouveau message électronique afin que l’utilisateur puisse composer un message. Pour plus d’informations sur les associations d’URI, consultez Fichiers, dossiers et bibliothèques.

Ces étapes montrent comment s’inscrire à un nom de schéma d’URI personnalisé, alsdk://et comment activer votre application lorsque l’utilisateur lance un URI alsdk://.

API importantes

Les API suivantes sont utilisées dans cette rubrique :

Remarque

Dans Windows, certaines URI et extensions de fichier sont réservées pour une utilisation par les applications intégrées et le système d’exploitation. Les tentatives d’inscription de votre application avec un URI réservé ou une extension de fichier sont ignorées. Consultez les noms de schémas d’URI réservés et les types de fichiers pour une liste alphabétique de schémas d’URI que vous ne pouvez pas inscrire pour vos applications, car elles sont réservées ou interdites.

Étape 1 : Spécifier le point d’extension dans le manifeste du package

L’application reçoit des événements d’activation uniquement pour les noms de schéma d’URI répertoriés dans le manifeste du package. Voici comment vous indiquez que votre application gère le nom du schéma d’URI alsdk.

  1. Dans l’Explorateur de solutions , double-cliquez sur package.appxmanifest pour ouvrir le concepteur de manifeste. Sélectionnez l'onglet Déclarations et, dans la liste déroulante Déclarations disponibles, sélectionnez Protocole, puis cliquez sur Ajouter.

    Voici une brève description de chacun des champs que vous pouvez renseigner dans le concepteur de manifeste pour le protocole (consultez le manifeste du package AppX pour plus d’informations) :

Terrain Descriptif
Logo Spécifiez le logo utilisé pour identifier le nom du schéma d’URI dans le Définir les programmes par défaut sur le panneau de configuration . Si aucun logo n’est spécifié, le petit logo de l’application est utilisé.
Nom d’affichage Spécifiez le nom d'affichage pour identifier le nom du schéma d’URI dans le Définir les programmes par défaut sur le panneau de configuration.
Nom Choisissez un nom pour le schéma d’URI.
Remarque Le nom doit être en minuscules.
Types de fichiers réservés et interdits Consultez les noms de schémas d’URI réservés et les types de fichiers pour une liste alphabétique de schémas d’URI que vous ne pouvez pas inscrire pour vos applications Windows, car elles sont réservées ou interdites.
exécutable Spécifie l’exécutable de lancement par défaut pour le protocole. S’il n’est pas spécifié, l’exécutable de l’application est utilisé. Si elle est spécifiée, la chaîne doit être comprise entre 1 et 256 caractères, doit se terminer par «.exe», et ne peut pas contenir ces caractères : >, <, :, « , |, ?ou *. Si cela est spécifié, le point d'entrée est également utilisé. Si le point d’entrée n’est pas spécifié, le point d’entrée défini pour l’application est utilisé.
point d’entrée Spécifie la tâche qui gère l’extension de protocole. Il s’agit normalement du nom qualifié d’espace de noms complet d’un type de Windows Runtime. S’il n’est pas spécifié, le point d’entrée de l’application est utilisé.
page de démarrage Page web qui gère le point d’extensibilité.
Groupe de ressources Balise que vous pouvez utiliser pour regrouper les activations d’extension à des fins de gestion des ressources.
Affichage souhaité (Windows uniquement) Spécifiez le champ Vue souhaitée pour indiquer la quantité d’espace dont la fenêtre de l’application a besoin lorsqu’elle est lancée pour le nom du schéma d’URI. Les valeurs possibles pour Vue souhaitée sont Default, Moins d'utilisation, Utilisation à moitié, Plus d'utilisationou Utilisation minimale.
Remarque Windows prend en compte plusieurs facteurs différents lors de la détermination de la taille finale de la fenêtre de l’application cible, par exemple la préférence de l’application source, le nombre d’applications à l’écran, l’orientation de l’écran, etc. Définir vue souhaitée ne garantit pas un comportement de fenêtrage spécifique pour l’application cible.
famille d’appareils mobiles : L’affichage souhaité n'est pas pris en charge sur cette famille d'appareils mobiles.
  1. Entrez images\Icon.png comme Logo .

  2. Entrez SDK Sample URI Scheme comme nom d’affichage

  3. Entrez alsdk comme Nom.

  4. Appuyez sur Ctrl+S pour enregistrer la modification apportée à package.appxmanifest.

    Cela ajoute un élément Extension comme celui-ci au manifeste du package. La catégorie windows.protocol indique que l’application gère le nom du schéma d’URI .

    <Applications>
        <Application Id= ... >
            <Extensions>
                <uap:Extension Category="windows.protocol">
                  <uap:Protocol Name="alsdk">
                    <uap:Logo>images\icon.png</uap:Logo>
                    <uap:DisplayName>SDK Sample URI Scheme</uap:DisplayName>
                  </uap:Protocol>
                </uap:Extension>
          </Extensions>
          ...
        </Application>
   </Applications>

Étape 2 : Ajouter les icônes appropriées

Les applications qui deviennent la valeur par défaut d’un nom de schéma d’URI ont leurs icônes affichées à différents endroits dans le système, comme dans le panneau de configuration des programmes par défaut. Incluez une icône 44 x 44 avec votre projet à cet effet. Faites correspondre l’apparence du logo de vignette de l’application et utilisez la couleur d’arrière-plan de votre application plutôt que de rendre l’icône transparente. Faites en sorte que le logo s'étende jusqu'au bord sans ajouter de marge. Testez vos icônes sur des arrière-plans blancs. Consultez icônes d’application et logos pour plus d’informations sur les icônes.

Étape 3 : Gérer l’événement activé

Remarque

Dans une application WinUI, dans App.OnLaunched (ou en fait à tout moment), vous pouvez appeler (AppInstance.GetActivatedEventArgs) pour récupérer les arguments d’événement activés et les vérifier pour déterminer comment l’application a été activée. Consultez la migration des fonctionnalités de cycle de vie des applications pour plus d’informations sur les différences de cycle de vie entre les applications UWP et WinUI.

Dans les applications UWP, le gestionnaire d’événements OnActivated reçoit tous les événements d’activation. La propriété Kind indique le type d’événement d’activation. Cet exemple est configuré pour gérer les événements d’activation du protocole .

public partial class App
{
   protected override void OnActivated(IActivatedEventArgs args)
  {
      if (args.Kind == ActivationKind.Protocol)
      {
         ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
         // TODO: Handle URI activation
         // The received URI is eventArgs.Uri.AbsoluteUri
      }
   }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs const& args)
{
    if (args.Kind() == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
    {
        auto protocolActivatedEventArgs{ args.as<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs>() };
        // TODO: Handle URI activation  
        auto receivedURI{ protocolActivatedEventArgs.Uri().RawUri() };
    }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs^ args)
{
   if (args->Kind == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
   {
      Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ eventArgs =
          dynamic_cast<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(args);
      
      // TODO: Handle URI activation  
      // The received URI is eventArgs->Uri->RawUri
   }
}

Remarque

Lorsqu’il est lancé via le contrat de protocole, assurez-vous que le bouton Précédent ramène l’utilisateur à l’écran qui a lancé l’application et non au contenu précédent de l’application.

Le code suivant lance l’application par programmation via son URI :

   // Launch the URI
   var uri = new Uri("alsdk:");
   var success = await Windows.System.Launcher.LaunchUriAsync(uri)

Pour plus d’informations sur la façon de lancer une application via un URI, consultez Lancer l’application par défaut pour un URI.

Il est recommandé que les applications créent un frame XAML pour chaque événement d’activation qui ouvre une nouvelle page. De cette façon, la pile d'historique de navigation pour la nouvelle frame XAML ne contiendra pas de contenu précédent que l'application pourrait avoir sur la fenêtre actuelle lors de sa suspension. Les applications qui décident d’utiliser un seul frame XAML pour le lancement et les contrats de fichiers doivent effacer les pages du journal de navigation Frame avant d’accéder à une nouvelle page.

Lorsqu’elles sont lancées via l’activation du protocole, les applications doivent envisager d’inclure l’interface utilisateur qui permet à l’utilisateur de revenir à la page supérieure de l’application.

Remarques

Toute application ou site web peut utiliser le nom de votre schéma d’URI, y compris les applications malveillantes. Ainsi, toutes les données que vous obtenez dans l’URI peuvent provenir d’une source non approuvée. Nous vous recommandons de ne jamais effectuer d’action permanente en fonction des paramètres que vous recevez dans l’URI. Par exemple, les paramètres d’URI peuvent être utilisés pour lancer l’application sur la page du compte d’un utilisateur, mais nous vous recommandons de ne jamais les utiliser pour modifier directement le compte de l’utilisateur.

Remarque

Si vous créez un nom de schéma d’URI pour votre application, veillez à suivre les instructions de RFC 4395. Cela garantit que votre nom répond aux normes des schémas d’URI.

Remarque

Lorsqu’une application UWP est lancée via le contrat de protocole, assurez-vous que le bouton Précédent ramène l’utilisateur à l’écran qui a lancé l’application et non au contenu précédent de l’application.

Nous vous recommandons que les applications créent un nouveau Frame XAML pour chaque événement d’activation qui ouvre une nouvelle cible d’Uri. De cette façon, la pile d'historique de navigation pour la nouvelle frame XAML ne contiendra pas de contenu précédent que l'application pourrait avoir sur la fenêtre actuelle lors de sa suspension.

Si vous décidez que vous souhaitez que vos applications utilisent un seul Frame XAML pour les contrats de lancement et de protocole, effacez les pages du journal de navigation Frame avant d’accéder à une nouvelle page. Lors du lancement via le contrat de protocole, envisagez d’inclure l’interface utilisateur dans vos applications qui permet à l’utilisateur de revenir en haut de l’application.