Verwenden benutzerdefinierter Eigenschaften für App-Erweiterungen

Die Eigenschaften der App-Erweiterung sind ein benutzerdefiniertes Metadatenfeld, das vom Entwickler der App-Erweiterung in seinem App-Manifest bereitgestellt wird. Hosts von App-Erweiterungen können diese Metadaten bei der Untersuchung von App-Erweiterungen lesen, ohne dass Inhalte von der App-Erweiterung geladen werden müssen.

Eigenschaften sind eine optionale, aber sehr nützliche Funktion. Es gibt eine breite Palette möglicher Metadaten, die du bei der Erstellung einer Hostplattform für eine Anwendungserweiterung benötigen, z. B. Version, Funktionen, Listen unterstützter Dateitypen oder andere Daten, die du vor dem Laden einer App-Erweiterung kennen solltest. Solche Informationen können sogar bestimmen, wie du eine App-Erweiterung lädst. Anstatt zu versuchen, alle erforderlichen Felder vorherzusagen, bieten die Eigenschaften der App-Erweiterung einen offenen Zeichenbereich, in dem du genau definieren kannst, was du in der für deine App am besten geeigneten Methode benötigst.

Vorteile von App-Erweiterungseigenschaften

Es gibt zwei wichtige Gründe, warum du die Vorteile der App-Erweiterungseigenschaften nutzen solltest:

  • Es ist eine einfache und sichere Möglichkeit, grundlegende oder wichtige Metadaten über deine App-Erweiterungsplattform zu speichern, ohne diese Informationen in Dateien ablegen zu müssen. Du kannst es für wichtige Konzepte wie Versionsverwaltung, Berechtigungen und zur Durchsetzung verwenden. Deine App könnte z. B. darauf bestehen, dass ein version-Feld definiert und in den Eigenschaften vorhanden ist, und basierend auf diesem Wert ein anderes Ladeverhalten aufweisen.

  • Da die Informationen im App-Manifest gespeichert werden, können sie in Zukunft indiziert und über eine API zur Verfügung gestellt werden. Das bedeutet, dass du sie zur Anzeige für den Benutzer übergeben oder eine verfeinerte Suche nach bestimmten Eigenschaften der App-Erweiterung durchführen kannst, ohne dass du die Erweiterung zuerst bereitstellen und laden musst.

Deklarieren von Eigenschaften

Eigenschaften werden in der Datei „Package.appxmanifest“ in deinem Paket deklariert. Sie können zur Laufzeit vom Erweiterungshost als Eigenschaftensatz gelesen werden. Da der Host die Plattform definiert, ist es seine Aufgabe, den Entwicklern der Erweiterung mitzuteilen, welche Eigenschaften verfügbar sind und in die AppExtension-Deklaration aufgenommen werden sollten.

Hinweis

Der Manifest-Designer in Visual Studio unterstützt nicht die Möglichkeit, Eigenschaften zu definieren. Du musst „Package.appxmanifest“ direkt bearbeiten, um Eigenschaften zu definieren.

Um Eigenschaften zu deklarieren, füge sie in das <uap3:Properties/>-Element unter deiner <uap3:AppExtension>-Deklaration ein. Hier folgt ein Beispiel für eine <uap3:AppExtension>-Deklaration für Microsoft Edge, die von Edge unterstützte Eigenschaften verwendet.

<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>

Microsoft Edge hat einen bekannten Eigenschaftswert von Capabilities mit einer Liste der deklarierten Erweiterungsmöglichkeiten definiert. Als Host kannst du beliebige Eigenschaften in deinen App-Erweiterungen unterstützen. Da es sich um einen Eigenschaftensatz handelt, kannst du auch geschachtelte Eigenschaften verwenden. Es ist eine gute Idee, eine Stammversionseigenschaft zu haben, die du verwenden kannst, falls du in Zukunft das Format deiner Erweiterungen änderst. Wir haben Version absichtlich nicht als Attribut von App-Erweiterungen festgelegt, damit du nicht künstlich auf die Verwendung unserer Semantik der Versionsverwaltung beschränkt bist. Stattdessen haben wir Eigenschaften erstellt, bei denen die Version eines von vielen benutzerdefinierten Attributen in der von dir gewünschten Art und Weise und im gewünschten Format vorliegen kann.

Verwenden von Eigenschaften

Angenommen, du verfügst über eine einfache Eigenschaft in einer App-Erweiterung, die eine Version wie die folgende beschreibt.

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

Um diese Daten zur Laufzeit zu abzurufen, rufst du einfach GetExtensionPropertiesAsync() für die App-Erweiterungen auf.

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();
    }
}