Templat

Templat memungkinkan aplikasi klien untuk menentukan format yang tepat dari pemberitahuan yang ingin diterimanya. Dengan menggunakan templat, aplikasi dapat mewujudkan beberapa manfaat yang berbeda, termasuk yang berikut:

  • Backend platform-agnostik.

  • Pemberitahuan yang dipersonalisasi.

  • Kemandirian versi klien.

  • Pelokalan yang mudah.

Bagian ini menyediakan dua contoh mendalam tentang cara menggunakan templat untuk mengirim pemberitahuan platform-agnostik yang menargetkan semua perangkat Anda di seluruh platform, dan untuk mempersonalisasi pemberitahuan siaran ke setiap perangkat.

Menggunakan Templat Lintas platform

Cara standar untuk mengirim pemberitahuan push adalah dengan mengirim, untuk setiap pemberitahuan yang akan dikirim, muatan khusus ke layanan pemberitahuan platform (WNS, APNS). Misalnya, untuk mengirim pemberitahuan ke APNS, payload adalah objek Json dari formulir berikut:

{“aps”: {“alert” : “Hello!” }}

Untuk mengirim pesan toast serupa pada aplikasi Windows Store, payload-nya adalah sebagai berikut:

<toast>
  <visual>
    <binding template=\"ToastText01\">
      <text id=\"1\">Hello!</text>
    </binding>
  </visual>
</toast>

Anda dapat membuat payload serupa untuk platform MPNS (Windows Phone) dan GCM (Android).

Persyaratan ini memaksa backend aplikasi untuk menghasilkan muatan yang berbeda untuk setiap platform, dan secara efektif membuat backend bertanggung jawab atas bagian dari lapisan presentasi aplikasi. Beberapa kekhawatiran termasuk lokalisasi dan tata letak grafis (terutama untuk aplikasi Bursa Windows yang menyertakan pemberitahuan untuk berbagai jenis ubin).

Fitur templat Notification Hubs memungkinkan aplikasi klien untuk membuat pendaftaran khusus, yang disebut pendaftaran templat, yang mencakup, selain sekumpulan tag, templat. Mengingat contoh muatan sebelumnya, satu-satunya informasi independen platform adalah pesan peringatan aktual (Halo! ). Templat adalah serangkaian instruksi untuk Notification Hub tentang cara memformat pesan independen platform untuk pendaftaran aplikasi klien tertentu tersebut. Dalam contoh sebelumnya, pesan independen platform adalah properti tunggal: pesan = Halo!.

Gambar berikut mengilustrasikan proses di atas:

Templates

Templat untuk pendaftaran aplikasi klien iOS adalah sebagai berikut:

{“aps”:{“alert”:”$(message)”}}

Templat analog untuk aplikasi klien Windows Store adalah:

<toast>
  <visual>
    <binding template=\"ToastText01\">
      <text id=\"1\">$(message)</text>
    </binding>
  </visual>
</toast>

Perhatikan bahwa pesan aktual diganti untuk ekspresi $(message). Ekspresi ini menginstruksikan Notification Hub, setiap kali mengirim pesan ke pendaftaran khusus ini, untuk membuat pesan yang mengikuti templat ini.

Aplikasi klien dapat membuat beberapa pendaftaran untuk menggunakan beberapa templat; misalnya, templat untuk pesan pemberitahuan dan templat untuk pembaruan petak peta. Aplikasi klien juga dapat mencampur pendaftaran asli (pendaftaran tanpa templat) dan pendaftaran templat.

Catatan

Notification Hub mengirimkan satu pemberitahuan untuk setiap pendaftaran tanpa mempertimbangkan apakah mereka termasuk dalam aplikasi klien yang sama. Perilaku ini dapat digunakan untuk menerjemahkan notifikasi mandiri platform ke dalam lebih banyak notifikasi. Misalnya, pesan independen platform yang sama ke Notification Hub dapat diterjemahkan dengan mulus dalam pemberitahuan toast dan pembaruan petak peta, tanpa mengharuskan backend untuk menyadarinya. Perhatikan bahwa beberapa platform (misalnya, iOS) mungkin menciutkan beberapa pemberitahuan ke perangkat yang sama jika dikirim dalam waktu singkat.

Menggunakan Templat untuk Personalisasi

Keuntungan lain untuk menggunakan templat adalah kemampuan untuk menggunakan Notification Hubs untuk melakukan personalisasi per pendaftaran notifikasi. Misalnya, pertimbangkan aplikasi cuaca yang menampilkan petak peta dengan kondisi cuaca di lokasi tertentu. Pengguna dapat memilih antara derajat Celcius atau Fahrenheit, dan ramalan cuaca dalam satu atau lima hari. Menggunakan templat, setiap penginstalan aplikasi klien dapat mendaftar untuk format yang diperlukan (Celcius 1 hari, Fahrenheit 1 hari, Celcius 5 hari, Fahrenheit 5 hari), dan meminta backend mengirim satu pesan yang berisi semua informasi yang diperlukan untuk mengisi templat tersebut (misalnya, ramalan lima hari dengan derajat Celcius dan Fahrenheit).

Templat untuk ramalan satu hari dengan suhu Celcius adalah sebagai berikut:

<tile>
  <visual>
    <binding template="TileWideSmallImageAndText04">
      <image id="1" src="$(day1_image)" alt="alt text"/>
      <text id="1">Seattle, WA</text>
      <text id="2">$(day1_tempC)</text>
    </binding>  
  </visual>
</tile>

Pesan yang dikirim ke Notification Hub berisi properti berikut:

  • Day1_image

  • Day1_tempC

  • Day1_tempF

  • Day2_image

  • Day2_tempC

Dengan menggunakan pola ini, backend hanya mengirim satu pesan tanpa harus menyimpan opsi personalisasi tertentu untuk pengguna aplikasi. Gambar berikut mengilustrasikan skenario ini:

Templates

Cara Mendaftar templat

Untuk informasi selengkapnya tentang cara mendaftar templat, lihat Manajemen Pendaftaran.

Bahasa Ekspresi Templat

Templat tidak boleh berisi string. Mereka terbatas pada dokumen XML atau JSON. Selain itu, Anda hanya dapat menempatkan ekspresi di tempat-tempat tertentu; misalnya, atribut node atau nilai untuk XML, nilai properti string untuk JSON.

Misalnya, berikut ini bukan templat XML yang valid:

<tile>
  <visual>
    <binding $(property)>
      <text id="1">Seattle, WA</text>
    </binding>  
  </visual>
</tile>

Seperti yang dijelaskan di bagian berikut, saat menggunakan perangkaian, ekspresi harus dibungkus dalam tanda kurung kurawal. Contohnya:

<tile>
  <visual>
    <binding template="ToastText01">
      <text id="1">{'Hi, ' + $(name)}</text>
    </binding>  
  </visual>
</tile>

Kode analog di JSON muncul sebagai berikut:

{"aps":{"alert":"{'Hi, ' + $(name)}"}}

Tabel berikut ini memperlihatkan bahasa yang diperbolehkan dalam templat:

Ekspresi Deskripsi

$(prop)

Referensi ke properti acara dengan nama yang diberikan. Nama properti tidak peka huruf besar/kecil. Ekspresi ini menetapkan nilai teks properti atau ke dalam untai kosong jika properti tidak ada.

$(prop, n)

Seperti di atas, tetapi teks secara eksplisit diklip pada karakter n, misalnya $(title, 20) klip konten properti judul pada 20 karakter.

.(prop, n)

Seperti di atas, tetapi teks dicukupkan dengan tiga titik karena dipotong. Ukuran total string yang diklip dan akhiran tidak melebihi karakter n. .(title, 20) dengan properti input "Ini adalah baris judul" menghasilkan Ini adalah judul.....

%(prop)

Mirip $(name) dengan kecuali bahwa output dikodekan URI.

#(prop)

Digunakan dalam templat JSON (misalnya, untuk templat iOS dan Android).

Fungsi ini berfungsi persis sama seperti $(prop) yang ditentukan sebelumnya, kecuali saat digunakan dalam templat JSON (misalnya, templat Apple). Dalam hal ini, jika fungsi ini tidak dikelilingi oleh "{','}" (misalnya, ‘myJsonProperty’ : ‘#(name)’), dan mengevaluasi ke angka dalam format Javascript, misalnya, regexp: (0|([1-9][0-9]*))(\.[0-9]+)?((e|E)(+|-)?[0-9]+)?, maka output JSON adalah angka.

Misalnya, ‘badge : ‘#(name)’ menjadi ‘badge’ : 40 (dan bukan ‘40‘).

‘text’ or “text”

Harfiah. Literal berisi teks bebas yang diapit dalam tanda kutip tunggal atau ganda.

expr1 + expr2

Operator perangkaian bergabung dengan dua ekspresi menjadi satu string.

Ekspresi dapat menjadi salah satu bentuk sebelumnya.

Saat menggunakan perangkaian, seluruh ekspresi harus dikurung dengan {}. Contohnya:{$(prop) + ‘ - ’ + $(prop2)}