Compartir a través de


Uso de propiedades personalizadas para extensiones de aplicación

Las propiedades de la extensión de una aplicación son un campo de metadatos personalizado proporcionado por el desarrollador de la extensión de aplicación en el manifiesto de la aplicación. Los hosts de la extensión de aplicación pueden leer estos metadatos al examinar las extensiones de aplicación sin tener que cargar su contenido.

Las propiedades son una característica opcional, pero muy útil. Hay una amplia gama de posibles metadatos que puedes necesitar al crear una plataforma de host de extensiones de aplicación, como la versión, las capacidades, las listas de tipos de archivo admitidos u otros datos que es útil conocer antes de cargar una extensión de aplicación. Tal información puede incluso determinar cómo se carga una extensión de aplicación. En lugar de intentar predecir todos los campos que podrías necesitar, las propiedades de la extensión de aplicación proporcionan un lienzo abierto para definir exactamente lo que necesitas de la manera más adecuada para la aplicación.

Ventajas de las propiedades de las extensiones de aplicación

Existen dos razones importantes por las que deberías aprovechar las propiedades de las extensiones de aplicación:

  • Es una manera fácil y segura de almacenar metadatos básicos o importantes sobre la plataforma de la extensión de aplicación sin tener que colocar esa información en los archivos. Puedes utilizarlas para conceptos importantes como el control de versiones, los permisos y el cumplimiento. Por ejemplo, la aplicación podría insistir en que el campo version esté definido y presente en las propiedades, así como tener un comportamiento de carga diferente basado en ese valor.

  • Dado que la información se almacena en el manifiesto de la aplicación, se puede indexar y poner a disposición a través de una API en el futuro. Esto significa que puedes hacer que se muestre al usuario, o tener búsquedas de extensiones de aplicación más refinadas para propiedades específicas sin tener que implementar y cargar la extensión primero.

Cómo declarar las propiedades

Las propiedades se declaran en el archivo Package.appxmanifest del paquete. El host de la extensión puede leerlas en tiempo de ejecución como un conjunto de propiedades. Dado que el host define la plataforma, depende del host comunicarse con los desarrolladores de la extensión sobre qué propiedades están disponibles y deben incluirse en la declaración de AppExtension.

Nota:

El diseñador de manifiestos de Visual Studio no admite la capacidad de definir propiedades. Debes editar el archivo Package.appxmanifest directamente para definir las propiedades.

Para declarar las propiedades, colócalas en el elemento <uap3:Properties/> en la declaración de <uap3:AppExtension>. Este es un ejemplo de declaración de <uap3:AppExtension> para Microsoft Edge que usa las propiedades admitidas por 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>

Microsoft Edge ha definido un valor de propiedad conocido de Capabilities con una lista de funcionalidades de extensión declaradas. Como host, puedes admitir cualquier propiedad que quieras en las extensiones de la aplicación. Dado que se trata de un conjunto de propiedades, también puedes tener propiedades anidadas. Es aconsejable tener una propiedad de versión raíz que puedas usar en caso de que cambies los formatos de las extensiones en el futuro. No colocamos intencionadamente Version como atributo de extensiones de aplicación para que no limitarte artificialmente al uso de nuestra semántica de control de versiones. En su lugar, creamos propiedades en las que la versión podría ser uno de los muchos atributos definidos por el usuario, de la forma y el formato que quieras, y procesados como quieras.

Uso de las propiedades

Supongamos que tienes una propiedad simple en las extensiones de aplicación que describen una versión, como la siguiente.

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

Para obtener estos datos en tiempo de ejecución, solo tienes que llamar a GetExtensionPropertiesAsync() en las extensiones de aplicación.

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