Push bildirimlerine genel bakış

Push bildirimlerinin ne olduğuna, neden kullanılabileceğine ve işleyiş şekline genel bakış.

Push bildirimi nedir?

Push mesajları, web sitenizi kullanmıyor olsalar bile bilgileri kullanıcılarınızın dikkatine sunmanıza olanak tanır. Kullanıcılar etkin olmasa bile onlara bilgi "push" edebileceğiniz için bu mesajlara push mesajları denir. Bu kavramı daha iyi anlamak için push teknolojisini pull teknolojisiyle karşılaştırın.

Bildirimler, kullanıcılara küçük bilgi parçaları sunar. Web siteleri, kullanıcılara önemli ve zamana duyarlı etkinlikler veya kullanıcının yapması gereken işlemler hakkında bilgi vermek için bildirimler kullanabilir. Bildirimlerin görünümü ve hissi platformlar arasında değişiklik gösterir:

macOS ve Android'deki bildirimler.
macOS ve Android'deki bildirim örnekleri.

Push mesajları ve bildirimler birbirinden ayrı ancak birbirini tamamlayan iki teknolojidir. Push, web sitenizi aktif olarak kullanmadıklarında bile sunucunuzdan kullanıcılara mesaj gönderme teknolojisidir. Bildirimler, kullanıcının cihazında itilen bilgileri görüntüleme teknolojisidir. Bildirimleri push mesajlaşma olmadan kullanmak mümkündür. Bir gün, kullanıcılara yönelik bildirimler olmadan push mesajları (sessiz push) kullanmak da mümkün olabilir ancak tarayıcılar şu anda buna izin vermemektedir. Pratikte ise genellikle birlikte kullanılırlar. Teknik bilgi sahibi olmayan kullanıcılar, push mesajları ile bildirimler arasındaki farkı muhtemelen anlamaz. Bu koleksiyonda push bildirimleri derken, bir mesaj gönderme ve ardından bildirim olarak görüntülemenin birleşimini kastediyoruz. Push mesajları dediğimizde, push teknolojisini kastediyoruz. Bildirimler derken bildirim teknolojisini kastediyoruz.

Push bildirimleri neden kullanılır?

  • Kullanıcılar için push bildirimleri, zamanında, alakalı ve doğru bilgiler alma yöntemidir.
  • Push bildirimleri, siz (web sitesi sahipleri) için kullanıcı etkileşimini artırmanın bir yoludur.

Push bildirimleri nasıl çalışır?

Push bildirimlerini uygulamayla ilgili temel adımlar şunlardır:

  1. Kullanıcıdan push bildirimi gönderme izni istemek için istemci mantığı ekleyin ve ardından istemci tanımlayıcı bilgilerini bir veritabanında depolanması için sunucunuza gönderin.
  2. Mesajları istemci cihazlara göndermek için sunucu mantığı ekleme.
  3. Cihaza aktarılan mesajları almak için istemci mantığı ekleme ve bunları bildirim olarak görüntüleme.

Bu sayfanın geri kalanında bu adımlar daha ayrıntılı olarak açıklanmaktadır.

Push bildirimi gönderme izni alma

Öncelikle web sitenizin, push bildirimi göndermek için kullanıcıdan izin alması gerekir. Bu işlem, bir kullanıcı hareketiyle (ör. Do you want to receive push notifications? isteğinin yanındaki Evet düğmesini tıklayarak) tetiklenmelidir. Onaydan sonra Notification.requestPermission() numaralı telefonu arayın. Kullanıcının cihazındaki işletim sistemi veya tarayıcı, kullanıcının push bildirimlerini etkinleştirmek istediğini resmi olarak onaylamak için bir tür kullanıcı arayüzü sunar. Bu kullanıcı arayüzü platformlar arasında farklılık gösterir.

İstemciyi push bildirimlerine abone etme

İzin aldıktan sonra, web sitenizin kullanıcıyı push bildirimlerine abone olma işlemini başlatması gerekir. Bu işlem, Push API kullanılarak JavaScript aracılığıyla yapılır. Abonelik işlemi sırasında herkese açık bir kimlik doğrulama anahtarı sağlamanız gerekir. Bu anahtar hakkında daha fazla bilgiyi aşağıda bulabilirsiniz. Abonelik sürecini başlattıktan sonra tarayıcı, daha sonra daha fazla bilgi edineceğiniz push hizmeti olarak bilinen bir web hizmetine ağ isteği gönderir.

Aboneliğin başarılı olduğu varsayılarak tarayıcı bir PushSubscription objesi döndürür. Bu verileri uzun süreli olarak saklamanız gerekir. Bu işlem genellikle bilgileri kontrol ettiğiniz bir sunucuya gönderip sunucunun bilgileri bir veritabanında depolaması şeklinde yapılır.

Push mesajı gönderme izni alın. PushSubscription'ı alın. PushSubscription'ı sunucunuza gönderin.

Push mesajı gönderme

Sunucunuz, push mesajını doğrudan istemciye göndermez. Push hizmeti bunu yapar. Push hizmeti, kullanıcınızın tarayıcı tedarikçisi tarafından kontrol edilen bir web hizmetidir. Bir istemciye push bildirimi göndermek istediğinizde push hizmetine bir web hizmeti isteği göndermeniz gerekir. Push hizmetine gönderdiğiniz web hizmeti isteği, web push protokolü isteği olarak bilinir. Web push protokolü isteği şunları içermelidir:

  • Mesaja hangi verilerin dahil edileceği.
  • Mesajın gönderileceği istemci.
  • Push hizmetinin iletiyi nasıl yayınlaması gerektiğine dair talimatlar. Örneğin, push hizmetinin 10 dakika sonra mesaj gönderme girişimini durdurması gerektiğini belirtebilirsiniz.

Normalde web push protokolü isteğini, kontrol ettiğiniz bir sunucu üzerinden gönderirsiniz. Elbette, sunucunuzun ham web hizmeti isteğini kendisinin oluşturması gerekmez. Bu işlemi gerçekleştirebilecek web-push-libs gibi kitaplıklar vardır. Ancak temel mekanizma, HTTP üzerinden bir web hizmeti isteğidir.

Sunucunuz push hizmetine bir web push protokolü isteği gönderir. Push hizmeti de iletiyi kullanıcının cihazına gönderir.

Push hizmeti isteğinizi alır, kimliğini doğrular ve push mesajını uygun istemciye yönlendirir. İstemcinin tarayıcısı çevrimdışıysa push hizmeti, tarayıcı çevrimdışı olana kadar push mesajını sıraya ekler.

Her tarayıcı istediği push hizmetini kullanır. Web sitesi geliştiricisi olarak bunun üzerinde hiçbir kontrolünüz yoktur. Web push protokolü isteği standartlaştırılmış olduğu için bu bir sorun değildir. Diğer bir deyişle, tarayıcı tedarikçisinin hangi push hizmetini kullandığıyla ilgilenmeniz gerekmez. Web push protokolü isteğinizin spesifikasyona uygun olduğundan emin olmanız yeterlidir. Spesifikasyonda, isteğin belirli başlıkları içermesi ve verilerin bayt akışı olarak gönderilmesi gerekir.

Ancak web push protokolü isteğini doğru push hizmetine gönderdiğinizden emin olmanız gerekir. Bu bilgileri, tarayıcının abonelik işlemi sırasında size döndürdüğü PushSubscription verileri sağlar. PushSubscription nesnesi şuna benzer:

{
  "endpoint": "https://fcm.googleapis.com/fcm/send/c1KrmpTuRm…",
  "expirationTime": null,
  "keys": {
    "p256dh": "BGyyVt9FFV…",
    "auth": "R9sidzkcdf…"
  }
}

endpoint alanının asıl adı push hizmetidir. endpoint yolunun istemci tanımlayıcı bilgileri, push hizmetinin iletiyi tam olarak hangi istemciye göndereceğini belirlemesine yardımcı olur.

keys, şifreleme için kullanılır. Bu konu, bir sonraki bölümde açıklanmıştır.

Push mesajını şifreleme

Bir push hizmetine gönderdiğiniz veriler şifrelenmelidir. Bu durum, push hizmetinin istemciye gönderdiğiniz verileri görüntülemesini engeller. Hangi push hizmetinin kullanılacağına tarayıcı tedarikçisinin karar verdiğini ve push hizmetinin teorik olarak güvenli olmayabileceğini unutmayın. Sunucunuz, web push protokolü isteklerini şifrelemek için PushSubscription içinde sağlanan keys öğesini kullanmalıdır.

Web push protokolü isteklerinizi imzalama

Push hizmeti, başkalarının kullanıcılarınıza ileti göndermesini önlemenin bir yolunu sunar. Teknik olarak bunu yapmanız gerekmez, ancak Chrome'da en kolay uygulama için bunu gerektirir. Firefox'ta isteğe bağlıdır. Diğer tarayıcılar gelecekte bunu gerektirebilir.

Bu iş akışında, uygulamanıza özgü bir özel anahtar ve genel anahtar bulunur. Kimlik doğrulama süreci kabaca şu şekilde işler:

  • Özel ve ortak anahtarı tek seferlik bir görev olarak oluşturursunuz. Özel ve ortak anahtarın kombinasyonu uygulama sunucusu anahtarları olarak bilinir. Bu anahtarlar VAPID anahtarları olarak da adlandırılabilir. VAPID, bu kimlik doğrulama sürecini tanımlayan spesifikasyondur.
  • JavaScript kodunuzdan bir istemciyi push bildirimlerine abone ettiğinizde herkese açık anahtarınızı sağlarsınız. Push hizmeti, cihaz için bir endpoint oluşturduğunda, sağlanan ortak anahtarı endpoint ile ilişkilendirir.
  • Web push protokolü isteği gönderdiğinizde bazı JSON bilgilerini özel anahtarınızla imzalarsınız.
  • Push hizmeti, web push protokolü isteğinizi aldığında, imzalı bilgilerin kimliğini doğrulamak için depolanan herkese açık anahtarı kullanır. İmza geçerliyse itme hizmeti, isteğin eşleşen özel anahtara sahip bir sunucudan geldiğini bilir.

Push mesajının teslimini özelleştirme

Web push protokolü istek spesifikasyonu, push hizmetinin push mesajını istemciye gönderme şeklini özelleştirmenize olanak tanıyan parametreleri de tanımlar. Örneğin, şunları özelleştirebilirsiniz:

  • Push hizmetinin bir mesajı ne kadar süre boyunca yayınlamaya çalışacağını tanımlayan mesajın geçerlilik süresi (TTL).
  • İletinin aciliyeti. Bu, push hizmetinin yalnızca yüksek öncelikli mesajlar göndererek istemcinin pil ömrünü koruması durumunda kullanışlıdır.
  • Bir mesajın konusu, aynı konuyla ilgili bekleyen mesajları en son mesajla değiştirir.

Aktarılan mesajları bildirim olarak al ve görüntüle

Web push protokolü isteğini push hizmetine göndermenizin ardından push hizmeti, aşağıdaki etkinliklerden biri gerçekleşene kadar isteğinizi sıraya alır:

  1. İstemci online olur ve push hizmeti push mesajını yayınlar.
  2. İletinin süresi dolar.

İstemci tarayıcısı aktarılan bir mesaj aldığında push mesajı verilerinin şifresini çözer ve hizmet çalışanınıza bir push etkinliği gönderir. Hizmet çalışanı, web siteniz açık değilken veya tarayıcı kapalıyken bile arka planda çalışabilen JavaScript kodudur. Hizmet çalışanınızın push etkinlik işleyicisinde, bilgileri bildirim olarak görüntülemek için ServiceWorkerRegistration.showNotification() işlevini çağırırsınız.

Mesaj cihaza ulaşır. Tarayıcı, hizmet çalışanını uyandırır. Push etkinliği gönderilir.

Sonraki adımlar

Codelab uygulamaları