Aracılığıyla paylaş


Ş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 bildirimini kişiselleştirmek için şablonların nasıl kullanılacağına ilişkin iki ayrıntılı örnek sağlanır.

Şablonları Platformlar Arası 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 formun bir Json nesnesidir:

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

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

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

MPNS (Windows Phone) ve GCM (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 sunum katmanının bir bölümünden sorumlu hale getirir. Bazı endişeler yerelleştirme ve grafik düzenleridir (özellikle çeşitli kutucuk türlerine yönelik bildirimler içeren Windows Store 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. Önceki yük örnekleri göz önüne alındığında, platformdan bağımsız tek bilgi gerçek uyarı iletisidir (Hello!). Şablon, Bildirim Hub'ının söz konusu istemci uygulamasının kaydı için platformdan bağımsız bir iletiyi biçimlendirmeye ilişkin bir dizi yönergedir. Yukarıdaki örnekte, platformdan bağımsız ileti tek bir özelliktir: message = Hello!.

Aşağıdaki resimde yukarıdaki işlem gösterilmektedir:

Templates

iOS istemci uygulaması kaydının şablonu aşağıdaki gibidir:

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

Windows Store istemci uygulaması için benzer şablon:

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

gerçek iletinin ifadesiyle $(message)değiştirildiğini unutmayın. Bu ifade, Bildirim Hub'ına bu kayda her ileti gönderdiğinde, bu şablonu izleyen bir ileti oluşturmasını emreder.

İstemci uygulamaları 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.

Not

Bildirim Hub'ı, her kayıt 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 aynı platformdan bağımsız ileti, arka ucun farkında olmasına gerek kalmadan bildirim uyarısında ve kutucuk güncelleştirmesinde sorunsuz bir şekilde çevrilebilir. Bazı platformların (örneğin, iOS) kısa bir süre içinde gönderilirse aynı cihaza birden çok bildirimi daraltabileceğini unutmayın.

Kişiselleştirme için Şablonları Kullanma

Şablonları kullanmanın bir diğer avantajı da bildirimler için 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ünlük 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 bir tahmin).

Santigrat dereceli bir günlük tahminin şablonu 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 özellikleri içerir:

  • Day1_image

  • Day1_tempC

  • Day1_tempF

  • Day2_image

  • Day2_tempC

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 resimde bu senaryo gösterilmektedir:

Templates

Şablonlara Kaydolma

Şablonlara kaydolma hakkında daha fazla bilgi için bkz . Kayıt Yönetimi.

Şablon İfade Dili

Şablonlar dize içeremez. XML veya JSON belgeleriyle 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 özelliği değerleri.

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

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

Aşağıdaki bölümde açıklandığı gibi, birleştirme kullanılırken ifadelerin küme ayraç içinde sarmalanması gerekir. Örnek:

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

JSON'daki benzer kod aşağıdaki gibi görünür:

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

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, ancak metin n karakterde açıkça 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 son eklenmiştir. Kırpılmış dizenin ve son ekin toplam boyutu n karakteri aşmaz. .(title, 20) "Bu başlık satırıdır" giriş özelliğiyle bu başlık.... sonucunu döndürür.

%(prop)

$(name) Çıkışın URI ile kodlanmış olması dışında benzer.

#(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, önceden belirtilenle tam olarak aynı $(prop) şekilde çalışır. Bu durumda, bu işlev "{','}" (örneğin, ‘myJsonProperty’ : ‘#(name)’)) ile çevrelenmiyorsa ve Javascript biçiminde bir sayı (örneğin, regexp: (0|([1-9][0-9]*))(\.[0-9]+)?((e|E)(+|-)?[0-9]+)?) olarak değerlendirilirse, JSON çıktısı bir sayıdır.

Örneğin, ‘badge : ‘#(name)’ olur ‘badge’ : 40 (değil ‘40‘).

‘text’ or “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)}.