Menggunakan properti kustom untuk ekstensi aplikasi

Properti ekstensi aplikasi adalah bidang metadata kustom yang disediakan oleh pengembang ekstensi aplikasi dalam manifes aplikasi mereka. Host ekstensi aplikasi dapat membaca metadata ini saat memeriksa ekstensi aplikasi tanpa harus memuat konten apa pun dari ekstensi aplikasi.

Properti adalah fitur opsional tetapi sangat berguna. Ada berbagai metadata yang mungkin Anda perlukan saat membuat platform host ekstensi aplikasi, seperti versi, kemampuan, daftar jenis file yang didukung atau data lain yang berguna untuk diketahui sebelum memuat ekstensi aplikasi. Informasi tersebut bahkan dapat menentukan cara Anda memuat ekstensi aplikasi. Daripada mencoba memprediksi semua bidang yang mungkin Anda butuhkan, properti ekstensi aplikasi menyediakan kanvas terbuka untuk menentukan apa yang Anda butuhkan dengan cara yang paling cocok untuk aplikasi Anda.

Keuntungan properti ekstensi aplikasi

Ada dua alasan penting mengapa Anda harus memanfaatkan properti ekstensi aplikasi:

  • Ini adalah cara mudah dan aman untuk menyimpan metadata dasar atau penting tentang platform ekstensi aplikasi Anda tanpa harus memasukkan informasi tersebut ke dalam file. Anda dapat menggunakannya untuk konsep penting seperti penerapan versi, izin, dan sebagai penegakan. Misalnya, aplikasi Anda dapat bersikeras bahwa version bidang ditentukan dan ada di properti, dan memiliki perilaku pemuatan yang berbeda berdasarkan nilai tersebut.

  • Karena informasi disimpan dalam manifes aplikasi, informasi tersebut dapat diindeks dan disediakan melalui API di masa mendatang. Itu berarti Anda dapat menggelegaknya untuk ditampilkan kepada pengguna, atau memiliki lebih banyak pencarian ekstensi aplikasi yang disempurnakan untuk properti tertentu tanpa harus menyebarkan dan memuat ekstensi terlebih dahulu.

Cara mendeklarasikan properti

Properti dideklarasikan dalam file Package.appxmanifest dalam paket Anda. Mereka dapat dibaca pada runtime oleh host ekstensi sebagai kumpulan properti. Karena host mendefinisikan platform, terserah host untuk berkomunikasi dengan pengembang ekstensi tentang properti mana yang tersedia dan harus dimasukkan ke AppExtension dalam deklarasi.

Catatan

Perancang manifes di Visual Studio tidak mendukung kemampuan untuk menentukan properti. Anda harus mengedit Package.appxmanifest secara langsung untuk menentukan properti.

Untuk mendeklarasikan properti, masukkan ke <uap3:Properties/> dalam elemen di bawah deklarasi Anda <uap3:AppExtension> . Berikut adalah contoh <uap3:AppExtension> deklarasi untuk Microsoft Edge yang menggunakan properti yang didukung oleh 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 telah menentukan nilai Capabilities properti yang diketahui dengan daftar kemampuan ekstensi yang dideklarasikan. Sebagai host, Anda dapat mendukung properti apa pun yang Anda inginkan di ekstensi aplikasi Anda. Karena ini adalah kumpulan properti, Anda juga dapat memiliki properti berlapis. Ini adalah ide yang baik untuk memiliki properti versi root yang dapat Anda gunakan jika Anda mengubah format ekstensi Anda di masa mendatang. Kami sengaja tidak menempatkan Version sebagai atribut ekstensi aplikasi sehingga Anda tidak akan secara artifisial terbatas untuk menggunakan semantik penerapan versi kami. Sebagai gantinya, kami membuat properti di mana versi bisa menjadi salah satu dari banyak atribut yang ditentukan khusus, dengan cara dan format apa pun yang Anda inginkan, dan diproses sesuai keinginan Anda.

Cara menggunakan properti

Misalkan Anda memiliki properti sederhana dalam ekstensi aplikasi yang menjelaskan versi, seperti berikut ini.

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

Untuk mendapatkan data ini saat runtime, cukup panggil GetExtensionPropertiesAsync() pada ekstensi aplikasi.

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