Push bildirimlerine genel bakış

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

Push bildirimleri nedir?

Push mesajları, kullanıcılarınız web sitenizi kullanmasalar bile onları bilgilendirmenizi sağlar. 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 farklı ancak birbirini tamamlayıcı 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. Uygulamada bu iki yöntem genellikle birlikte kullanılır. Teknik bilgi sahibi olmayan kullanıcılar, push mesajları ile bildirimler arasındaki farkı muhtemelen anlamaz. Bu koleksiyonda push bildirimleri derken, bir mesajın gönderilmesinin ardından bildirim olarak gösterilmesini 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.
  • Web sitesi sahibi olarak push bildirimleri, 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 gönderilen mesajları almak ve bunları bildirim olarak görüntülemek için istemci mantığı ekleme.

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. Bu onayı aldıktan sonra Notification.requestPermission() numaralı telefonu arayın. Kullanıcının cihazındaki işletim sistemi veya tarayıcı, kullanıcının push bildirimleri etkinleştirmek istediğini resmi olarak onaylamak için muhtemelen bir tür kullanıcı arayüzü sunar. Bu kullanıcı arayüzü platformlara göre değişir.

İstemciyi push bildirimlerine abone etme

İzin aldıktan sonra web sitenizin, kullanıcıyı push bildirimlerine abone etme 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 bir push hizmetine 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 dahil edilecek veriler.
  • Mesajın gönderileceği istemci.
  • Push hizmetinin iletiyi nasıl yayınlaması gerektiğine dair talimatlar. Örneğin, itme hizmetinin 10 dakika sonra iletiyi gönderme denemelerini 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 sizin için halledebilecek kitaplıklar (ör. web-push-libs) vardır. Ancak temel mekanizma, HTTP üzerinden bir web hizmeti isteğidir.

Sunucunuz, push hizmetine bir web push protokolü isteği gönderir ve push hizmeti, mesajı 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 bu konuda herhangi bir kontrol sahibi değilsiniz. Web push protokolü isteği standartlaştırılmış olduğundan 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 uyduğundan emin olmanız yeterlidir. Spesifikasyonda, isteğin belirli üstbilgileri içermesi ve verilerin bayt akışı olarak gönderilmesi gerektiği gibi diğer konular da belirtilmiştir.

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

{
  "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 aşağıda açıklanmıştır.

Push mesajını şifreleme

Bir push hizmetine gönderdiğiniz veriler şifrelenmiş olmalıdır. Bu, itme 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 mesaj göndermesini engellemenize olanak tanır. Teknik olarak bunu yapmanız gerekmez ancak Chrome'da en kolay uygulama için bu gereklidir. Firefox'ta isteğe bağlıdır. Diğer tarayıcılarda gelecekte bu gerekli olabilir.

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 herkese açık 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. İtme 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 iletideki konu. Aynı konuyla ilgili bekleyen iletiler, en son iletiyle değiştirilir.

Gönderilen mesajları bildirim olarak alma ve görüntüleme

Web push protokolü isteğini push hizmetine gönderdikten sonra push hizmeti, aşağıdaki etkinliklerden biri gerçekleşene kadar isteğinizi kuyrukta tutar:

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

Bir istemci tarayıcı, itilen bir mesaj aldığında itilen mesaj verilerinin şifresini çözer ve hizmet işleyicinize 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ı