Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ham bildirimler kısa, genel amaçlı anında iletme bildirimleridir. Bunlar kesinlikle yönerge amaçlıdır ve kullanıcı arabirimi bileşeni içermez. Diğer anında iletme bildirimlerinde olduğu gibi Windows Anında İletme Bildirimi Hizmetleri (WNS) özelliği de bulut hizmetinizden uygulamanıza ham bildirimler sunar.
Ham bildirimleri, kullanıcı uygulamaya bunu yapma izni vermişse uygulamanızı bir arka plan görevi çalıştırmak üzere tetikleme dahil olmak üzere çeşitli amaçlarla kullanabilirsiniz. Uygulamanızla iletişim kurmak için WNS kullanarak, kalıcı yuva bağlantıları oluşturma, HTTP GET iletileri gönderme ve diğer hizmetten uygulamaya bağlantılar oluşturmanın işlem yükünden kaçınabilirsiniz.
Important
Ham bildirimleri anlamak için En iyisi Windows Anında İletilen Bildirim Hizmetleri'ne (WNS) genel bakış bölümünde açıklanan kavramlar hakkında bilgi sahibi olmaktır.
Bildirim, kutucuk ve rozet anında iletme bildirimlerinde olduğu gibi, uygulamanızın bulut hizmetinden atanmış bir kanal Tekdüzen Kaynak Tanımlayıcısı (URI) üzerinden WNS'ye ham bir bildirim iletilir. WNS de bildirimi bu kanalla ilişkilendirilmiş cihaza ve kullanıcı hesabına gönderir. Diğer anında iletme bildirimlerinden farklı olarak ham bildirimlerin belirli bir biçimi yoktur. Yükün içeriği tamamen uygulama tanımlıdır.
Ham bildirimlerden yararlanabilecek bir uygulamanın çizimi olarak, teorik belge işbirliği uygulamasına göz atalım. Aynı belgeyi aynı anda düzenleyen iki kullanıcıyı göz önünde bulundurun. Paylaşılan belgeyi barındıran bulut hizmeti, diğer kullanıcı tarafından değişiklik yapıldığında her kullanıcıya bildirim göndermek için ham bildirimleri kullanabilir. Ham bildirimlerin belgedeki değişiklikleri içermesi gerekmez, bunun yerine her kullanıcının uygulama kopyasına merkezi konumla iletişim kurması ve kullanılabilir değişiklikleri eşitlemesi için sinyal gönderir. Uygulama ve bulut hizmeti, ham bildirimleri kullanarak belgenin açık olduğu süre boyunca kalıcı bağlantıları koruma ek yükünden tasarruf edebilir.
Ham bildirimler nasıl çalışır?
Tüm ham bildirimler anında iletme bildirimleridir. Bu nedenle anında iletme bildirimleri göndermek ve almak için gereken kurulum ham bildirimler için de geçerlidir:
- Ham bildirim göndermek için geçerli bir WNS kanalınız olmalıdır. Daha fazla bilgi için, bir push bildirimi kanalı alma hakkında Bildirim kanalı isteme, oluşturma ve kaydetmekonusuna bakın.
- Uygulamanızın bildirimine İnternet özelliğini eklemeniz gerekir. Microsoft Visual Studio bildirim düzenleyicisinde, Özellikler sekmesinde İnternet (İstemci) olarak bu seçeneği bulacaksınız. Daha fazla bilgi için bkz . Özellikler.
Bildirimin gövdesi uygulama tarafından tanımlanmış bir biçimdedir. İstemci, verileri yalnızca uygulama tarafından anlaşılması gereken null olarak sonlandırılan bir dize (HSTRING) olarak alır.
İstemci çevrimdışıysa, ham bildirimler WNS tarafından yalnızca X-WNS-Cache-Policy üst bilgisi bildirime dahil edilmişse önbelleğe alınır. Ancak, cihaz yeniden çevrimiçi olduğunda yalnızca bir ham bildirim önbelleğe alınır ve teslim edilir.
Bir ham bildirimin istemcide izleyebileceği sadece üç olası yol vardır: bunlar bir bildirim teslim olayı aracılığıyla çalışan uygulamanıza gönderilir, bir arka plan görevine iletilir veya bırakılır. Bu nedenle, istemci çevrimdışıysa ve Windows Bildirim Hizmeti (WNS) ham bir bildirim teslim etmeye çalışırsa, bildirim iptal edilir.
Ham bildirim oluşturma
Ham bildirim göndermek, bir kutucuk, bildirim veya rozet anında iletme bildirimi göndermeye benzer; ancak şu farklar vardır:
- HTTP İçerik Türü üst bilgisi "application/octet-stream" olarak ayarlanmalıdır.
- HTTP X-WNS-Type üst bilgisi "wns/raw" olarak ayarlanmalıdır.
- Bildirim gövdesi, boyutu 5 KB'tan küçük herhangi bir dize yükü içerebilir, ancak boş bir dize olmamalıdır.
Ham bildirimlerin, uygulamanızı tetikleyen kısa iletiler olarak kullanılması amaçlanır. Örneğin, daha büyük miktarda veriyi eşitlemek için doğrudan hizmete başvurmak veya bildirim içeriğine göre yerel bir durum değişikliği yapmak. WNS anında iletme bildirimlerinin teslim edilemeyeceği garanti edilemez, bu nedenle uygulamanızın ve bulut hizmetinizin ham bildirimin istemciye ulaşmama olasılığını (örneğin, istemci çevrimdışı olduğunda) hesaba katması gerektiğini unutmayın.
Anında iletme bildirimleri gönderme hakkında daha fazla bilgi için bkz . Hızlı Başlangıç: Anında iletme bildirimi gönderme.
Ham bildirim alma
Uygulamanızın ham bildirimler alabildiği iki yol vardır:
- Uygulamanız çalışırken bildirim teslimi olayları.
- Ham bildirim tarafından tetiklenen arka plan görevleri aracılığıyla uygulamanızın arka plan görevlerini çalıştırmak için etkinleştirilip etkinleştirilmediğini.
Bir uygulama ham bildirimleri almak için her iki mekanizmayı da kullanabilir. Bir uygulama hem bildirim teslimi olay işleyicisini hem de ham bildirimler tarafından tetiklenen arka plan görevlerini uygularsa, uygulama çalışırken bildirim teslim olayı öncelik alır.
- Uygulama çalışıyorsa, bildirim teslim olayı arka plan görevine göre öncelik alır ve uygulama bildirimi işlemek için ilk fırsata sahip olur.
- Bildirim teslimi olay işleyicisi, olayın PushNotificationReceivedEventArgs.Cancel özelliğini true olarak ayarlayarak işleyici çıktıktan sonra ham bildirimin arka plan görevine geçirilmemesi gerektiğini belirtebilir. Cancel özelliği false olarak ayarlanmışsa veya ayarlanmamışsa (varsayılan değer false), ham bildirim, bildirim teslim olay işleyicisi görevini tamamladıktan sonra arka plan görevini tetikler.
Bildirim gönderim olayları
Uygulamanız kullanımdayken ham bildirimleri almak için bir bildirim teslim olayı (PushNotificationReceived) kullanabilir. Bulut hizmeti ham bir bildirim gönderdiğinde, çalışan uygulama kanal URI'sinde bildirim teslim olayını işleyerek bunu alabilir.
Uygulamanız çalışmıyorsa ve arka plan görevlerini () kullanmıyorsa, söz konusu uygulamaya gönderilen tüm ham bildirimler WNS tarafından alındığında işlenmez. Bulut hizmetinizin kaynaklarını boşa harcamamak için, uygulamanın etkin olup olmadığını izlemek için hizmete mantık uygulamayı düşünmelisiniz. Bu bilgilerin iki kaynağı vardır: Bir uygulama hizmete bildirimleri almaya başlamaya hazır olduğunu açıkça söyleyebilir ve WNS hizmete ne zaman durdurulacağını söyleyebilir.
Uygulama bulut hizmetine bildirir: Uygulama, uygulamanın ön planda çalıştığını bildirmek için hizmetine başvurabilir. Bu yaklaşımın dezavantajı, uygulamanın hizmetinizle çok sık iletişim kurabilmesidir. Ancak, hizmetin uygulamanın gelen ham bildirimleri almaya hazır olup olmadığını her zaman bilmesinin avantajı vardır. Bir diğer avantajı, uygulama hizmetiyle iletişim kurarken hizmetin yayın yerine söz konusu uygulamanın belirli bir örneğine ham bildirimler göndermeyi bilmesidir.
Bulut hizmeti WNS yanıt iletilerine yanıt verir: Uygulama hizmetiniz, uygulamaya ham bildirim göndermeyi ne zaman durduracağını belirlemek için WNS tarafından döndürülen X-WNS-NotificationStatus ve X-WNS-DeviceConnectionStatus bilgilerini kullanabilir. Hizmetiniz bir kanala HTTP POST olarak bildirim gönderdiğinde yanıtta şu iletilerden birini alabilir:
- X-WNS-NotificationStatus: düşürüldü: Bu, bildirimin istemci tarafından alınmadığını gösterir. Uygulamanızın artık kullanıcının cihazında ön planda olmamasından kaynaklandığı için bırakılan yanıtının güvenli bir tahmin olduğu söylenebilir.
- X-WNS-DeviceConnectionStatus: bağlantısı kesildi veya X-WNS-DeviceConnectionStatus: geçici bağlantı kuruldu: Bu, Windows istemcisinin artık WNS bağlantısı olmadığını gösterir. Bu iletiyi WNS'den almak için bildirimin HTTP POST'unda X-WNS-RequestForStatus üst bilgisini ayarlayarak bunu istemeniz gerekir.
Uygulamanızın bulut hizmeti, ham bildirimler aracılığıyla iletişim girişimlerini sona erdirmek için bu durum iletilerindeki bilgileri kullanabilir. Hizmet, uygulamayla bağlantı kurduktan sonra, uygulama ön plana geri döndüğünde ham bildirimleri göndermeye devam edebilir.
Bildirimin istemciye başarıyla teslim edilip edilmediğini belirlemek için X-WNS-NotificationStatus'e güvenmemelisiniz.
Daha fazla bilgi için bkz. Anlık bildirim hizmeti isteği ve yanıt üst bilgileri
Ham bildirimler tarafından tetiklenen arka plan görevleri
Important
Ham bildirim arka plan görevlerini kullanmadan önce, bir uygulamaya BackgroundExecutionManager.RequestAccessAsync aracılığıyla arka plan erişimi verilmelidir.
Arka plan göreviniz bir PushNotificationTriggerile kayıtlı olmalıdır. Kayıtlı değilse, ham bir bildirim alındığında görev çalışmaz.
Ham bir bildirim tarafından tetiklenen bir arka plan görevi, uygulama çalışmadığında bile uygulamanızın bulut hizmetinin uygulamanızla iletişim kurmasını sağlar (çalıştırılmasını tetikleyebilir). Bu, uygulamanın sürekli bir bağlantı sürdürmek zorunda kalmadan gerçekleşir. Ham bildirimler, arka plan görevlerini tetikleyebilen tek bildirim türüdür. Ancak, toast, kutucuk ve rozet anında iletme bildirimleri arka plan görevlerini tetikleyemezken, ham bildirimler tarafından tetiklenen arka plan görevleri kutucukları güncelleştirip yerel API çağrıları aracılığıyla toast bildirimlerini tetikleyebilir.
Ham bildirimler tarafından tetiklenen arka plan görevlerinin nasıl çalıştığını gösteren bir çizim olarak, e-kitapları okumak için kullanılan bir uygulamayı düşünelim. İlk olarak, bir kullanıcı büyük olasılıkla başka bir cihazdan çevrimiçi olarak bir kitap satın alır. Buna yanıt olarak, uygulamanın bulut hizmeti, kitabın satın alındığını ve uygulamanın indirmesi gerektiğini belirten bir yük ile kullanıcının cihazlarının her birine ham bir bildirim gönderebilir. Daha sonra uygulama, yeni kitabın arka plan indirmesine başlamak için doğrudan uygulamanın bulut hizmetiyle iletişim kurar, böylece daha sonra kullanıcı uygulamayı başlattığında kitap zaten orada olur ve okumaya hazır olur.
Arka plan görevini tetikleme amacıyla ham bildirim kullanmak için uygulamanızın şunları yapması gerekir:
- BackgroundExecutionManager.RequestAccessAsync kullanarak arka planda görevleri çalıştırmak için izin isteyin (kullanıcının istediği zaman iptal edebilir).
- Arka plan görevini uygulayın. Daha fazla bilgi için bkz . Uygulamanızı arka plan görevleriyle destekleme
Arka plan göreviniz, uygulamanız için her seferinde bir ham bildirim alındığında PushNotificationTrigger'e yanıt olarak çağrılır. Arka plan göreviniz ham bildirimin uygulamaya özgü yükünü yorumlar ve bu yük üzerinde hareket eder.
Her uygulama için aynı anda yalnızca bir arka plan görevi çalıştırılabilir. Arka plan görevinin zaten çalıştığı bir uygulama için bir arka plan görevi tetikleniyorsa, yeni görev çalıştırilmeden önce ilk arka plan görevinin tamamlanması gerekir.
Diğer kaynaklar
Bu UWP makalesinde eski PushNotificationTrigger arka plan-görev davranışı açıklanmaktadır. Geçerli Windows Uygulama SDK'sı kanalının kaydedilmesi ve PushNotificationManager üzerinden ön planda veya arka planda ham iletme etkinleştirmesi için Windows Uygulama SDK'sı iletme bildirimleri örneğine bakın. Geçerli örnek, UWP PushNotificationTrigger arka plan-görev kayıt modelini kullanmaz.
İlgili konular
- Hızlı Başlangıç: Ham bildirim arka plan görevi oluşturma ve kaydetme
- Hızlı Başlangıç: Uygulamaları çalıştırmak için anında iletme bildirimlerini durdurma
- RawNotification
- BackgroundExecutionManager.RequestAccessAsync
Windows developer