Gérer l’activation des URI
API importantes
- Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs
- Windows.UI.Xaml.Application.OnActivated
Découvrez comment inscrire une application afin qu’elle devienne le gestionnaire par défaut d’un nom de schéma d’URI (Uniform Resource Identifier). Les applications de bureau Windows et les applications 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 s’inscrit pour le nom du schéma d’URI doit s’ouvrir à un nouveau message électronique afin que l’utilisateur puisse composer un nouveau message électronique. Pour plus d’informations sur les associations d’URI, consultez Recommandations et liste de contrôle pour les types de fichiers et les URI.
Ces étapes montrent comment s’inscrire à un nom alsdk://
de schéma d’URI personnalisé et comment activer votre application lorsque l’utilisateur lance un alsdk://
URI.
Remarque
Dans les applications UWP, certaines URI et extensions de fichiers 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 UWP, 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 alsdk
schéma d’URI.
Dans le 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) :
Champ | Description |
---|---|
Logo | Spécifiez le logo utilisé pour identifier le nom du schéma d’URI dans le Panneau de configuration Définir les programmes par défaut. Si aucun logo n’est spécifié, le petit logo de l’application est utilisé. |
Nom d’affichage | Spécifiez le nom complet pour identifier le nom du schéma d’URI dans les programmes par défaut définis sur le Panneau de configuration. |
Nom | Choisissez un nom pour le schéma d’URI. |
Notez que le nom doit être en minuscules. | |
Les types de fichiers réservés et interdits Voir 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 UWP, 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 *. S’il 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 complet qualifié d’espace de noms d’un type 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 Affichage souhaité 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 l’affichage souhaité sont Par défaut, UseLess, UseHalf, UseMore ou UseMinimum. Notez que 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. La définition de l’affichage souhaité 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 la famille d’appareils mobiles. |
Entrez
images\Icon.png
le logo.Entrer
SDK Sample URI Scheme
en tant que nom d’affichageEntrez
alsdk
comme Nom.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
alsdk
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. Le logo s’étend jusqu’au bord sans le remplir. Testez vos icônes sur des arrière-plans blancs. Pour plus d’informations sur les icônes et les logos d’application, consultez les icônes et les logos .
Étape 3 : Gérer l’événement activé
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
}
}
}
Protected Overrides Sub OnActivated(ByVal args As Windows.ApplicationModel.Activation.IActivatedEventArgs)
If args.Kind = ActivationKind.Protocol Then
ProtocolActivatedEventArgs eventArgs = args As ProtocolActivatedEventArgs
' TODO: Handle URI activation
' The received URI is eventArgs.Uri.AbsoluteUri
End If
End Sub
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, le backstack de navigation pour le nouveau frame XAML ne contient aucun contenu précédent que l’application peut avoir sur la fenêtre actuelle lorsqu’elle est suspendue. Les applications qui décident d’utiliser un cadre XAML unique pour le lancement et les contrats de fichiers doivent effacer les pages du journal de navigation Frame avant de naviguer vers 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.
Notes
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’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.
Nous vous recommandons de créer une trame XAML pour chaque événement d’activation qui ouvre une nouvelle cible d’URI. De cette façon, le backstack de navigation pour le nouveau frame XAML ne contient aucun contenu précédent que l’application peut avoir sur la fenêtre actuelle lorsqu’elle est suspendue.
Si vous décidez que vos applications utilisent une trame XAML unique pour les contrats de lancement et de protocole, désactivez 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.