Templat Notification Hubs

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

  • Backend platform-agnostik
  • Pemberitahuan yang dipersonalisasi
  • Kemandirian versi klien
  • Lokalisasi 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 peringatan ke APNS, muatannya adalah objek JSON dari formulir berikut:

{"aps": {"alert" : "Hello!" }}

Untuk mengirim pesan toast serupa pada aplikasi Bursa Windows, muatan XML adalah sebagai berikut:

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

Anda dapat membuat muatan serupa untuk platform MPNS (Windows Phone) dan FCM (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. Fitur templat Notification Hubs memungkinkan aplikasi klien untuk mengaitkan perangkat dengan templat baik ketika Anda bekerja dengan penginstalan (pilihan) atau pendaftaran. Mengingat contoh muatan sebelumnya, satu-satunya informasi independen platform adalah pesan peringatan aktual (Halo! ). Templat adalah serangkaian instruksi untuk hub pemberitahuan tentang cara memformat pesan independen platform untuk pendaftaran aplikasi klien tertentu tersebut. Dalam contoh sebelumnya, pesan independen platform adalah satu properti: message = Hello!.

Gambar berikut mengilustrasikan prosesnya:

Diagram memperlihatkan proses untuk menggunakan templat lintas platform

Templat untuk pendaftaran aplikasi klien iOS adalah sebagai berikut:

{"aps": {"alert": "$(message)"}}

Templat terkait untuk aplikasi klien Bursa Windows 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 hub pemberitahuan, setiap kali mengirim pesan ke pendaftaran khusus ini, untuk menyusun pesan yang mengikutinya dan menyisipkan nilai umum.

Jika Anda bekerja dengan model penginstalan, kunci penginstalan "templat" memegang JSON dari beberapa templat. Jika Anda bekerja dengan model pendaftaran, aplikasi klien dapat membuat beberapa pendaftaran untuk menggunakan beberapa templat; misalnya, templat untuk pesan peringatan dan templat untuk pembaruan ubin. Aplikasi klien juga dapat mencampur pendaftaran asli (pendaftaran tanpa templat) dan pendaftaran templat.

Hub pemberitahuan mengirimkan satu pemberitahuan untuk setiap templat 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 mandiri platform yang sama ke hub pemberitahuan dapat diterjemahkan dengan mulus dalam peringatan toast dan pembaruan ubin, tanpa memerlukan backend untuk mengetahuinya. Beberapa platform (misalnya, iOS) mungkin menciutkan beberapa notifikasi 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, perhatikan aplikasi cuaca yang menampilkan ubin 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 hub pemberitahuan berisi semua properti berikut ini:

day1_image day2_image day3_image day4_image day5_image
day1_tempC day2_tempC day3_tempC day4_tempC day5_tempC
day1_tempF day2_tempF day3_tempF day4_tempF day5_tempF

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

Diagram memperlihatkan bagaimana backend hanya mengirim satu pesan ke setiap platform.

Cara mendaftarkan templat

Untuk mendaftar dengan templat menggunakan model penginstalan (lebih disukai), atau model pendaftaran, lihat Manajemen pendaftaran.

Bahasa ekspresi templat

Templat terbatas pada format dokumen XML atau JSON. Selain itu, Anda hanya dapat menempatkan ekspresi di tempat tertentu; misalnya, atribut node atau nilai untuk XML, nilai properti untai untuk JSON.

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 dipotong pada karakter n, misalnya $(title, 20) memotong konten properti judul pada 20 karakter.
.(prop, n) Seperti di atas, tetapi teks dicukupkan dengan tiga titik karena dipotong. Ukuran total untai yang dipotong dan akhiran tidak melebihi karakter n.(title, 20) dengan properti input hasil "Ini adalah baris judul" dalam Ini adalah judulnya...
%(prop) Mirip dengan $(name) kecuali bahwa output dikodekan URI.
#(prop) Digunakan dalam templat JSON (misalnya, untuk templat iOS dan Android).

Fungsi ini berfungsi persis sama dengan '$(prop)' yang sebelumnya ditentukan, kecuali saat digunakan dalam templat JSON (misalnya, templat Apple). Dalam hal ini, jika fungsi ini tidak dikurung 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').
'teks' atau "teks" 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)}

Misalnya, templat berikut ini bukan templat XML yang valid:

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

Seperti yang dijelaskan sebelumnya, ketika menggunakan penggabungan, ekspresi harus dibungkus dengan kurung keriting. Contohnya:

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

Langkah berikutnya

Pelajari tentang Notification Hubs Azure