Notification Hubs şablonları

Şablonlar, istemci uygulamasının almak istediği bildirimlerin tam biçimini belirtmesini sağlar. Bir uygulama, şablonları kullanarak aşağıdakiler de dahil olmak üzere birkaç farklı avantaj elde edebilir:

  • Platformdan bağımsız bir arka uç
  • Kişiselleştirilmiş bildirimler
  • İstemci sürümü bağımsızlığı
  • Kolay yerelleştirme

Bu bölümde, platformlar arasında tüm cihazlarınızı hedefleyen platformdan bağımsız bildirimler göndermek ve her cihaza yayın bildirimlerini kişiselleştirmek için şablonların nasıl kullanılacağına ilişkin iki ayrıntılı örnek verilmiştir.

Platformlar arası şablonları kullanma

Anında iletme bildirimleri göndermenin standart yolu, gönderilecek her bildirim için platform bildirim hizmetlerine (WNS, APNS) belirli bir yük göndermektir. Örneğin, APNS'ye uyarı göndermek için yük aşağıdaki biçimdeki bir JSON nesnesidir:

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

Bir Windows Mağazası uygulamasında benzer bir bildirim iletisi göndermek için XML yükü aşağıdaki gibidir:

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

MPNS (Windows Phone) ve FCM (Android) platformları için benzer yükler oluşturabilirsiniz.

Bu gereksinim, uygulama arka ucu her platform için farklı yükler üretmeye zorlar ve arka ucu uygulamanın sunu katmanının bir parçasından etkili bir şekilde sorumlu hale getirir. Bazı endişeler yerelleştirme ve grafik düzenleridir (özellikle çeşitli kutucuk türleri için bildirim içeren Windows Mağazası uygulamaları için).

Notification Hubs şablon özelliği, bir istemci uygulamasının, etiket kümesine ek olarak bir şablon da dahil olmak üzere şablon kayıtları olarak adlandırılan özel kayıtlar oluşturmasını sağlar. Notification Hubs şablon özelliği, ister yüklemelerle (tercih edilen) ister kayıtlarla çalışıyor olun, istemci uygulamasının cihazları şablonlarla ilişkilendirmesini sağlar. Önceki yük örneklerine göre, platformdan bağımsız tek bilgi gerçek uyarı iletisidir (Hello!). Şablon, bildirim hub'ına ilgili istemci uygulamasının kaydı için platformdan bağımsız bir iletinin nasıl biçimlendirilmesine ilişkin bir dizi yönergedir. Önceki örnekte, platformdan bağımsız ileti tek bir özelliktir: message = Hello!.

Aşağıdaki şekilde işlemi gösterilmektedir:

Platformlar arası şablonları kullanma işlemini gösteren diyagram

iOS istemci uygulaması kaydı için şablon aşağıdaki gibidir:

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

Windows Mağazası istemci uygulaması için karşılık gelen şablon:

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

Gerçek iletinin ifadesiyle $(message)değiştirildiğini fark edin. Bu ifade, bildirim hub'ına bu kayda her ileti gönderdiğinde, bunu izleyen bir ileti oluşturmasını ve ortak değeri eklemesini belirtir.

Yükleme modeliyle çalışıyorsanız, yükleme "templates" anahtarı birden çok şablondan oluşan bir JSON içerir. Kayıt modeliyle çalışıyorsanız, istemci uygulaması birden çok şablon kullanmak için birden çok kayıt oluşturabilir; örneğin, uyarı iletileri için bir şablon ve kutucuk güncelleştirmeleri için bir şablon. İstemci uygulamaları ayrıca yerel kayıtları (şablon içermeyen kayıtlar) ve şablon kayıtlarını karıştırabilir.

Bildirim hub'ı, her şablon için aynı istemci uygulamasına ait olup olmadığını düşünmeden bir bildirim gönderir. Bu davranış, platformdan bağımsız bildirimleri daha fazla bildirime çevirmek için kullanılabilir. Örneğin, bildirim hub'ına yönelik platformdan bağımsız aynı ileti, arka ucun farkında olması gerekmeden bildirim uyarısında ve kutucuk güncelleştirmesinde sorunsuz bir şekilde çevrilebilir. Bazı platformlar (örneğin, iOS) kısa bir süre içinde gönderilirse aynı cihaza birden çok bildirimi daraltabilir.

Kişiselleştirme için şablonları kullanma

Şablonları kullanmanın bir diğer avantajı, bildirimleri kayıt başına kişiselleştirme gerçekleştirmek için Notification Hubs'ı kullanabilmektir. Örneğin, belirli bir konumdaki hava koşullarına sahip bir kutucuğu görüntüleyen bir hava durumu uygulamasını düşünün. Bir kullanıcı Santigrat veya Fahrenheit dereceleri ile tek veya beş günlük tahmin arasında seçim yapabilir. Şablonları kullanarak her istemci uygulaması yüklemesi gerekli biçime (1 gün Santigrat, 1 gün Fahrenheit, 5 gün Santigrat, 5 günlük Fahrenheit) kaydolabilir ve arka ucun bu şablonları doldurmak için gereken tüm bilgileri içeren tek bir ileti göndermesini sağlayabilir (örneğin, Santigrat ve Fahrenheit dereceleriyle beş günlük tahmin).

Santigrat sıcaklıklarıyla bir günlük tahmin için şablon aşağıdaki gibidir:

<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>

Bildirim hub'ına gönderilen ileti aşağıdaki özelliklerin tümünü içerir:

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

Bu düzeni kullanarak arka uç, uygulama kullanıcıları için belirli kişiselleştirme seçeneklerini depolamak zorunda kalmadan yalnızca tek bir ileti gönderir. Aşağıdaki şekilde bu senaryo gösterilmektedir:

Arka ucun her platforma nasıl yalnızca tek bir ileti gönderdiğini gösteren diyagram.

Şablonları kaydetme

Yükleme modelini (tercih edilen) veya kayıt modelini kullanarak şablonlara kaydolmak için bkz . Kayıt yönetimi.

Şablon ifade dili

Şablonlar XML veya JSON belge biçimleriyle sınırlıdır. Ayrıca, ifadeleri yalnızca belirli yerlere yerleştirebilirsiniz; örneğin, XML için düğüm öznitelikleri veya değerleri, JSON için dize özellik değerleri.

Aşağıdaki tabloda şablonlarda izin verilen dil gösterilmektedir:

İfade Açıklama
$(prop) Verilen ada sahip bir olay özelliğine başvuru. Özellik adları büyük/küçük harfe duyarlı değildir. Bu ifade özelliğin metin değerine veya özellik yoksa boş bir dizeye çözümleniyor.
$(prop, n) Yukarıda olduğu gibi, metin açıkça n karaktere kırpılır, örneğin $(title, 20) başlık özelliğinin içeriğini 20 karakterde klipler.
. (prop, n) Yukarıda olduğu gibi, metin kırpıldığından üç noktayla soneklenmiştir. Kırpılmış dizenin ve son ekin toplam boyutu n karakteri aşmaz. (title, 20) "This is the title line" (Başlık satırı budur) giriş özelliğiyle Bu başlık...
%(prop) $(name) ile benzer, ancak çıkışın URI ile kodlanmış olması gerekir.
#(prop) JSON şablonlarında kullanılır (örneğin, iOS ve Android şablonları için).

Bu işlev, JSON şablonlarında (örneğin, Apple şablonları) kullanıldığı durumlar dışında, daha önce belirtilen '$(prop)' ile tam olarak aynı şekilde çalışır. Bu durumda, bu işlev "{','}" (örneğin, 'myJsonProperty' : '#(name)') ile çevrelenmiyorsa ve JavaScript biçiminde bir sayı olarak değerlendirilir; örneğin, regexp: (0|( [1-9] [0-9]*))(.[ 0-9]+)? ((e| E)(+|-)? [0-9]+)?, ardından JSON çıkışı bir sayıdır.

Örneğin, 'rozet: '#(ad)' 'rozet' olur: 40 ('40' değil).
'text' veya "text" Değişmez değer. Değişmez değerler, tek veya çift tırnak içine alınmış rastgele metinler içerir.
expr1 + expr2 İki ifadeyi tek bir dizede birleştiren birleştirme işleci.

İfadeler önceki formlardan herhangi biri olabilir.

Birleştirme kullanılırken ifadenin tamamı ile {}çevrelenmelidir. Örneğin, {$(prop) + ‘ - ’ + $(prop2)}.

Örneğin, aşağıdaki şablon geçerli bir XML şablonu değildir:

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

Daha önce açıklandığı gibi, birleştirme kullanılırken ifadelerin küme ayraçları içinde sarmalanması gerekir. Örnek:

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

Sonraki adımlar

Azure Notification Hubs hakkında bilgi edinin