Utilisation de propriétés personnalisées pour les extensions d’application

Les propriétés d’extensions d’application sont un champ de métadonnées personnalisé fourni par le développeur de l’extension d’application dans son manifeste d’application. Les hôtes d’extensions d’application peuvent lire ces métadonnées lors de l’examen des extensions d’application sans avoir à charger de contenu à partir de l’extension d’application.

Les propriétés sont une fonctionnalité facultative mais très utile. Vous pouvez avoir besoin d’un large éventail de métadonnées quand vous créez une plateforme hôte d’extension d’application, telles que la version, les fonctionnalités, les listes de types de fichiers pris en charge ou d’autres données utiles avant de charger une extension d’application. Ces informations peuvent même déterminer la manière dont vous chargez une extension d’application. Au lieu d’essayer de prédire tous les champs dont vous pouvez avoir besoin, les propriétés d’extensions d’application fournissent un canevas vierge pour définir exactement ce dont vous avez besoin, de la manière la mieux adaptée à votre application.

Avantages des propriétés d’extensions d’application

Il existe deux raisons importantes pour lesquelles vous devez tirer parti des propriétés d’extensions d’application :

  • C’est un moyen simple et sécurisé de stocker des métadonnées de base ou importantes concernant votre plateforme d’extensions d’application sans avoir à placer ces informations dans des fichiers. Vous pouvez les utiliser pour des concepts importants tels que la gestion de versions, les autorisations et la mise en application. Par exemple, votre application peut insister sur le fait qu’un champ version soit défini et présent dans les propriétés, et avoir un comportement de chargement différent en fonction de cette valeur.

  • Les informations étant stockées dans le manifeste de l’application, elles peuvent être indexées et mises à disposition par le biais d’une API à l’avenir. Cela signifie que vous pouvez les présenter à l’écran pour l’utilisateur, ou disposer d’une extension d’application plus affinée pour rechercher des propriétés spécifiques sans avoir à déployer et charger l’extension au préalable.

Comment déclarer des propriétés ?

Les propriétés sont déclarées dans le fichier Package.appxmanifest de votre package. Elles peuvent être lues au moment de l’exécution par l’hôte d’extension en tant que jeu de propriétés. Comme c’est l’hôte qui définit la plateforme, il lui incombe d’indiquer aux développeurs d’extensions quelles propriétés sont disponibles et doivent être placées dans la déclaration AppExtension.

Remarque

Le concepteur de manifeste dans Visual Studio ne prend pas en charge la définition de propriétés. Vous devez modifier directement le fichier Package.appxmanifest pour définir les propriétés.

Pour déclarer des propriétés, placez-les dans l’élément <uap3:Properties/> sous votre déclaration <uap3:AppExtension>. Voici un exemple de déclaration <uap3:AppExtension> pour Microsoft Edge qui utilise des propriétés prises en charge par Edge.

<uap3:AppExtension Name="com.microsoft.edge.extension" Id="FirstExtension" PublicFolder="Extension" DisplayName="MyExtension">
  <uap3:Properties>
    <Capabilities>
      <Capability Name="websiteContent" />
      <Capability Name="websiteInfo" />
      <Capability Name="browserWebRequest" />
      <Capability Name="browserStorage" />
    </Capabilities>
  </uap3:Properties>
</uap3:AppExtension>

Edge a défini une valeur de propriété connue Capabilities avec une liste de fonctionnalités d’extension déclarées. En tant qu’hôte, vous pouvez prendre en charge les propriétés de votre choix dans vos extensions d’application. Étant donné qu’il s’agit d’un jeu de propriétés, vous pouvez également avoir des propriétés imbriquées. Il est judicieux de disposer d’une propriété de version racine que vous pouvez utiliser si vous changez les formats de vos extensions à l’avenir. Nous avons fait exprès de ne pas mettre Version comme attribut des extensions d’application, afin que vous ne soyez pas limiter artificiellement à l’utilisation de notre sémantique de gestion de versions. Au lieu de cela, nous avons créé des propriétés dans lesquelles la version peut être l’un des nombreux attributs définis personnalisés, de la façon, au format et avec le traitement que vous souhaitez.

Utilisation des propriétés

Supposez que vous disposez d’une propriété simple dans une extension d’application qui décrit une version, telle que la suivante.

<uap3:Properties>
    <Version>1.0.0.0</Version>
</uap3:Properties>

Pour obtenir ces données au moment de l’exécution, il vous suffit d’appeler GetExtensionPropertiesAsync() sur les extensions d’application.

string extensionVersion = "Unknown";
var properties = await ext.GetExtensionPropertiesAsync() as PropertySet;
if (properties != null)
{
    if (properties.ContainsKey("Version"))
    {
        PropertySet versionProperty = properties["Version"] as PropertySet;
        extensionVersion = versionProperty["#text"].ToString();
    }
}