Push bildirimlerine genel bakış

Push bildirimlerinin ne olduğuna, bunları neden kullanabileceğinize ve nasıl çalıştığına dair genel bir bakış.

Push bildirimi nedir?

Push mesajları, web sitenizi kullanmıyorlarken bile kullanıcılarınızın dikkatine ulaşmanızı sağlar. Etkin olmasalar bile kullanıcılarınıza bilgi "aktarabileceğiniz" için bunlara push mesajları adı verilir. Bu kavramı daha iyi anlamak için Push teknolojisi ile Çekme teknolojisi'ni karşılaştırın.

Bildirimler kullanıcıya küçük bilgi parçacıkları sunar. Web siteleri, kullanıcılara önemli, 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 tarzı platformlar arasında farklılık gösterir:

macOS ve Android'de bildirim örnekleri.
macOS ve Android'de bildirim örnekleri.

Push mesajları ve bildirimler, birbirini tamamlayan iki ayrı teknolojidir. Push, kullanıcılar web sitenizi etkin bir şekilde kullanmıyor olsalar bile sunucunuzdan kullanıcılara mesaj göndermek için kullanılan teknolojidir. Bildirimler, aktarılan bilgileri kullanıcının cihazında görüntüleme teknolojisidir. Bildirimleri push mesajlaşma olmadan kullanmak mümkündür. Bir gün push mesajlarını, kullanıcılara yönelik bildirimler olmadan da kullanmak mümkün olabilir (sessiz push) ancak tarayıcılar şu anda buna izin vermiyor. Pratikte genellikle birlikte kullanılırlar. Teknik bilgisi olmayan bir kullanıcı muhtemelen push mesajlar ile bildirimler arasındaki farkı anlamayacaktır. Bu koleksiyonda push bildirimleri dediğimizde, bir mesaj gönderme ve ardından bunu bildirim olarak görüntüleme birleşimi kastedilmektedir. Push mesajları dediğimizde, tek başına push teknolojisinden bahsediyoruz. Bildirimler dediğimizde, tek başına bildirim teknolojisinden bahsediyoruz.

Push bildirimlerini neden kullanmalısınız?

  • Kullanıcılar için push bildirimleri, bilgileri zamanında, alakalı ve kesin bir şekilde almanın bir yoludur.
  • Web sitesi sahibi olarak, push bildirimleri kullanıcı etkileşimini artırmanın bir yoludur.

Push bildirimlerinin işleyiş şekli

Genel olarak push bildirimlerinin uygulanması için temel adımlar şunlardır:

  1. Push bildirimleri göndermek için kullanıcıdan izin istemek amacıyla istemci mantığı ekleme ve ardından istemci tanımlayıcı bilgilerini veritabanında depolanması için sunucunuza gönderme.
  2. İstemci cihazlara mesaj aktarmak için sunucu mantığı ekleniyor.
  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 bildirimleri gönderme izni alma

Öncelikle, web sitenizin push bildirimleri göndermek için kullanıcının iznini alması gerekir. Bu, Do you want to receive push notifications? isteminin yanındaki Evet düğmesini tıklamak gibi bir kullanıcı hareketi tarafından tetiklenmelidir. Bu 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 değişiklik gösterir.

İstemcinin push bildirimlerine abone olmasını sağlama

İzin aldıktan sonra web sitenizin, kullanıcının push bildirimlerine abone olma sürecini başlatması gerekir. Bu işlem Push API kullanılarak JavaScript aracılığıyla gerçekleştirilir. Abonelik işlemi sırasında genel bir kimlik doğrulama anahtarı sağlamanız gerekir. Bu anahtarı daha sonra öğreneceksiniz. Abonelik işlemini başlatmanızın ardından tarayıcı, push hizmeti olarak bilinen bir web hizmetine ağ isteğinde bulunur. Bu konuda daha sonra bilgi edinebilirsiniz.

Aboneliğin başarılı olduğu varsayıldığında tarayıcı bir PushSubscription nesnesi döndürür. Bu verileri uzun süreli saklamanız gerekir. Bu genellikle bilgilerin sizin denetlediğiniz bir sunucuya gönderilmesi ve ardından sunucunun bu bilgileri bir veritabanında depolamasının sağlanmasıyla yapılır.

Push mesajı gönderme izni alın. PushSubscription edinin. Sunucunuza
PushSubscription gönderin.

Push mesajı gönderme

Sunucunuz push mesajını aslında doğrudan istemciye göndermez. Bunu push hizmetleri yapar. Push hizmeti, kullanıcınızın tarayıcı satıcısı tarafından kontrol edilen bir web hizmetidir. Bir istemciye push bildirimi göndermek istediğinizde, push hizmetine web hizmeti isteğinde bulunmanız 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 hangi istemciye gönderileceği.
  • Push hizmetinin mesajı nasıl teslim etmesi gerektiğiyle ilgili talimatlar. Örneğin, push hizmetinin 10 dakika sonra mesajı göndermeyi bırakması gerektiğini belirtebilirsiniz.

Normalde web push protokolü isteğini, kontrol ettiğiniz bir sunucu aracılığıyla yaparsınız. Elbette sunucunuzun ham web hizmeti isteğini kendi başına oluşturması gerekmez. Bu işlemi sizin için 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, push hizmeti ise 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ı online olana kadar push mesajını sıraya alır.

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ıldığı için bu bir sorun değildir. Diğer bir deyişle, tarayıcı satıcısının hangi push hizmetini kullandığıyla ilgilenmeniz gerekmez. Yalnızca web push protokolü isteğinizin spesifikasyona uyduğundan emin olmanız gerekir. Diğer özelliklerin yanı sıra, spesifikasyonda isteğin belirli başlıkları içermesi ve verilerin baytlık bir akış şeklinde gönderilmesi gerektiği belirtilmektedir.

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

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

endpoint alanının alan adı, aslında push hizmetidir. endpoint dosyasının yolu, push hizmetinin mesajın tam olarak hangi istemciye aktarılacağını belirlemesine yardımcı olan istemci kimliği bilgileridir.

keys, şifreleme için kullanılır. Bu konuyla ilgili açıklama aşağıda açıklanmıştır.

Push mesajını şifreleme

Push hizmetine gönderdiğiniz veriler şifrelenmelidir. Bu, push hizmetinin, istemciye gönderdiğiniz verileri görüntüleyebilmesini engeller. Hangi push hizmetinin kullanılacağına tarayıcı tedarikçisinin karar verdiğini ve bu push hizmetinin teorik olarak güvenli olmayan veya güvensiz olabileceğini unutmayın. Sunucunuz, web push protokolü isteklerini şifrelemek için PushSubscription içinde sağlanan keys değerini kullanmalıdır.

Web push protokolü isteklerinizi imzalayın

Push hizmeti, başkalarının kullanıcılarınıza ileti göndermesini önlemenin bir yoludur. Teknik olarak bunu yapmanız gerekmez, ancak Chrome'daki en kolay uygulama işlemi için gereklidir. Firefox'ta isteğe bağlıdır. Diğer tarayıcılar için de ileride gerekli olabilir.

Bu iş akışı, uygulamanıza özel bir özel anahtar ve ortak anahtar içerir. 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 kombinasyonu uygulama sunucusu anahtarları olarak bilinir. VAPID anahtarları olarak da adlandırılan bu öğeleri görebilirsiniz. VAPID, bu kimlik doğrulama işlemini tanımlayan spesifikasyondur.
  • Bir istemciye JavaScript kodunuzdan gelen push bildirimlerine abone olduğunuzda ortak 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.
  • Bir 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, imzalanmış bilgilerin kimliğini doğrulamak için depolanan ortak anahtarı kullanır. İmza geçerliyse push hizmeti, isteğin eşleşen özel anahtara sahip bir sunucudan geldiğini anlar.

Push mesajlarının teslimini özelleştirme

Web push protokolü isteği spesifikasyonu, push hizmetinin push mesajını istemciye gönderme şeklini özelleştirmenizi sağlayan parametreleri de tanımlar. Örneğin, şunları özelleştirebilirsiniz:

  • Bir iletinin Geçerlilik Süresi (TTL). Bu süre, push hizmetinin ne kadar süreyle mesaj teslim etmeye çalışacağını tanımlar.
  • Mesajın aciliyeti. Bu durum, push hizmetinin yalnızca yüksek öncelikli mesajlar göndererek istemcinin pil ömrünü koruduğu durumlarda yararlıdır.
  • Bir mesajın konusu. Bu konu, aynı konuya sahip bekleyen tüm mesajları en son mesajla değiştirir.

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

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. Müşteri çevrimiçi olur ve push hizmeti, push mesajını iletir.
  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. Service Worker temel olarak, web siteniz açık veya tarayıcı kapalı olduğunda bile arka planda çalışabilen JavaScript kodudur. Bilgileri bildirim olarak görüntülemek için hizmet çalışanınızın push etkinlik işleyicisinde ServiceWorkerRegistration.showNotification() yöntemini çağırırsınız.

Mesaj cihaza ulaşır. Tarayıcı, Service Worker'ı uyandırır. Push etkinliği gönderilir.

Sonraki adımlar

Code Labs