Поделиться через


Использование настраиваемых свойств для расширений приложений

Свойства расширения приложения — это настраиваемое поле метаданных, предоставленное разработчиком расширения приложения в манифесте приложения. Хосты расширений приложений могут считывать эти метаданные при проверке расширений приложений, без необходимости загрузки содержимого из расширения приложения.

Свойства являются необязательными, но очень полезными функциями. Существует широкий спектр возможных метаданных, которые могут потребоваться при создании платформы узла расширения приложения, например версии, возможностей, списков поддерживаемых типов файлов или других данных, которые полезно знать перед загрузкой расширения приложения. Такая информация может даже определить, как загрузить расширение приложения. Вместо того чтобы пытаться предугадать все необходимые поля, свойства расширения приложения предоставляют открытую возможность определить именно то, что вам нужно, в любом виде, который лучше всего подходит для вашего приложения.

Преимущества свойств расширения приложения

Существует две важные причины, по которым следует воспользоваться преимуществами свойств расширения приложения:

  • Это простой и безопасный способ хранения базовых или важных метаданных о платформе расширения приложения без необходимости помещать эти сведения в файлы. Ее можно использовать для важных понятий, таких как управление версиями, разрешения и как принудительное применение. Например, ваше приложение может требовать, чтобы поле version было определено и присутствовало в свойствах, а поведение загрузки изменялось в зависимости от этого значения.

  • Так как информация хранится в манифесте приложения, она может быть индексирована и доступна через API в будущем. Это означает, что вы можете поднять его для отображения пользователю или выполнять более детализированные поисковые запросы расширения приложения для конкретных свойств без необходимости предварительно развертывать и загружать расширение.

Как объявить свойства

Свойства объявляются в файле «Package.appxmanifest» в вашем пакете. Их можно считывать во время выполнения хостом расширения как набор свойств. Поскольку узел определяет платформу, именно узел должен сообщить разработчикам расширений о том, какие свойства доступны и должны быть включены в AppExtension объявление.

Замечание

Конструктор манифестов в Visual Studio не поддерживает возможность определения свойств. Чтобы определить свойства, необходимо непосредственно изменить Package.appxmanifest.

Чтобы объявить свойства, поместите их в элемент <uap3:Properties/> под вашим <uap3:AppExtension> объявлением. Здесь приведен пример <uap3:AppExtension> декларации для Microsoft 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 определило известное значение свойства Capabilities со списком объявленных возможностей расширения. В качестве узла вы можете поддерживать любые свойства, которые вы хотите использовать в расширениях приложения. Так как это набор свойств, можно также иметь вложенные свойства. Рекомендуется иметь корневое свойство версии, которое можно использовать в случае изменения форматов расширений в будущем. Мы намеренно не ставили Version в качестве атрибута расширений приложений, чтобы вы не были искусственно ограничены использованием семантики управления версиями. Вместо этого мы создали свойства, где версия может быть одним из многих пользовательски определяемых атрибутов, в любом желаемом формате и формате, а также обрабатываться так, как Вам угодно.

Использование свойств

Предположим, что у вас есть простое свойство в расширениях приложения, описывающих версию, например следующую.

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

Чтобы получить эти данные во время выполнения, просто вызовите GetExtensionPropertiesAsync() в расширениях приложения.

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