Push nasıl çalışır?

Matt Gaunt

API'ye geçmeden önce, push'i baştan sona genel hatlarıyla inceleyelim. Ardından, daha sonra ayrı ayrı konulara veya API'lere geçerken bunların ne kadar ve neden önemli olduğu hakkında bir fikir edinebilirsiniz.

Push'i uygulamanın üç temel adımı şunlardır:

  1. Kullanıcıyı push'a abone etmek için istemci tarafı mantığını ekleme (ör. web uygulamanızda kullanıcıyı push mesajlarına kaydeden JavaScript ve kullanıcı arayüzü).
  2. Arka uçtan / uygulamadan gelen ve kullanıcının cihazına push mesajı tetikleyen API çağrısı.
  3. Cihazdaki push'a "push etkinliği" alacak olan service worker JavaScript dosyası. Bildirimi bu JavaScript'de gösterebilirsiniz.

Bu adımların her birinin neleri içerdiğine biraz daha ayrıntılı bir şekilde bakalım.

1. Adım: İstemci tarafı

İlk adım, push mesajları için kullanıcıyı "abone" etmektir.

Kullanıcıların abone olması için iki şey gerekir. Öncelikle, kullanıcıya push mesajı göndermek için izin alın. İkincisi, tarayıcıdan PushSubscription almak.

PushSubscription, ilgili kullanıcıya push mesajı göndermek için ihtiyaç duyduğumuz tüm bilgileri içerir. Bunu, söz konusu kullanıcının cihazının kimliği olarak düşünebilirsiniz.

Tüm bunlar JavaScript'te Push API ile yapılır.

Tarayıcı desteği

  • Chrome: 42.
  • Edge: 17.
  • Firefox: 44.
  • Safari: 16.

Kaynak

Bir kullanıcıyı abone etmeden önce bir dizi "uygulama sunucusu anahtarı" oluşturmanız gerekir. Bu konuyu daha sonra ele alacağız.

VAPID anahtarları olarak da bilinen uygulama sunucusu anahtarları, sunucunuza özgüdür. Bu kimlikler, bir push hizmetinin kullanıcıya abone olan uygulama sunucusunu bilmesine ve bu kullanıcıya push mesajlarını tetikleyen sunucunun aynı olduğundan emin olmasına olanak tanır.

Kullanıcıyı abone ettikten ve PushSubscription aldıktan sonra PushSubscription ayrıntılarını arka uç / sunucunuza göndermeniz gerekir. Sunucunuzda bu aboneliği bir veritabanına kaydeder ve ilgili kullanıcıya push mesajı göndermek için kullanırsınız.

PushSubscription'ı arka uç sunucunuza gönderdiğinizden emin olun.

2. Adım: Push mesajı gönderin

Kullanıcılarınıza push mesajı göndermek istediğinizde bir push hizmetine API çağrısı yapmanız gerekir. Bu API çağrısı, hangi verilerin gönderileceğini, mesajın kime gönderileceğini ve mesajın nasıl gönderileceğiyle ilgili tüm ölçütleri içerir. Bu API çağrısı genellikle sunucunuzdan yapılır.

Kendinize sorduğunuz bazı sorular:

  • Push hizmeti nedir ve kim tarafından sağlanır?
  • API nasıl görünür? JSON, XML mi yoksa başka bir şey mi?
  • API ile neler yapabilirsiniz?

Push hizmeti nedir ve kim tarafından sağlanır?

Push hizmeti, bir ağ isteği alır, doğrular ve uygun tarayıcıya bir push mesajı gönderir. Tarayıcı çevrimdışıysa tarayıcı çevrimiçi olana kadar ileti sıraya alınır.

Her tarayıcı istediği push hizmetini kullanabilir. Bu, geliştiricilerin kontrolünde olmayan bir durumdur. Her push hizmeti aynı API çağrısını beklediğinden bu sorun oluşturmaz. Yani push hizmetinin kim olduğuna dikkat etmeniz gerekmez. API çağrınızın geçerli olduğundan emin olmanız yeterlidir.

Bir push mesajını tetiklemek için uygun URL'yi (yani push hizmetinin URL'sini) almak üzere PushSubscription içindeki endpoint değerine bakmanız yeterlidir.

Aşağıda, PushSubscription'dan alacağınız değerlere dair bir örnek verilmiştir:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

Bu durumda uç nokta [https://random-push-service.com/some-kind-of-unique-id-1234/v2/] şeklindedir. Push hizmeti "random-push-service.com" olur ve her uç nokta, "bir-tür-benzersiz-kimlik-1234" ile gösterilen kullanıcıya özgüdür. Push ile çalışmaya başladığınızda bu kalıbı fark edeceksiniz.

Abonelikteki anahtarlara daha sonra değinilecektir.

API nasıl görünür?

Her web push hizmetinin aynı API çağrısını beklediğini belirtmiştim. Bu API, Web Push Protokolü'dür. Bir push hizmetine nasıl API çağrısı yapacağınızı tanımlayan bir IETF standardıdır.

API çağrısı için belirli başlıkların ayarlanması ve verilerin bayt akışı olması gerekir. Bu API çağrısını bizim için gerçekleştirebilecek kitaplıklara ve bunu kendimizin nasıl yapacağımıza göz atacağız.

API ile neler yapabilirsiniz?

API, kullanıcıya veri içeren veya içermeyen bir mesaj gönderme yöntemi sağlar ve mesajın nasıl gönderileceğine dair talimatlar sunar.

Push mesajıyla gönderdiğiniz veriler şifrelenmiş olmalıdır. Bunun nedeni, push mesajıyla gönderilen verileri herkes olabilecek push hizmetlerinin görüntüleyememesini sağlamaktır. Hangi push hizmetinin kullanılacağına tarayıcı karar verdiğinden bu durum önemlidir. Bu da güvenli olmayan bir push hizmeti kullanan tarayıcıların önünü açabilir.

Bir push mesajını tetiklediğinizde push hizmeti API çağrısını alır ve mesajı sıraya ekler. Bu mesaj, kullanıcının cihazı çevrimiçi olana ve push hizmeti iletileri gönderene kadar kuyrukta kalır. Push hizmetine verebileceğiniz talimatlar, push mesajının nasıl sıraya alınacağını belirler.

Talimatlar aşağıdaki gibi ayrıntıları içerir:

  • Bir push mesajının geçerlilik süresi. Bu ayar, bir mesajın kaldırılmadan ve teslim edilmeden önce ne kadar süre boyunca kuyrukta beklemesi gerektiğini tanımlar.

  • Mesajın aciliyetini tanımlayın. Bu, push hizmetinin yalnızca yüksek öncelikli mesajlar göndererek kullanıcıların pil ömrünü koruması durumunda yararlıdır.

  • Bir push mesajına "konu" adı verin. Bu ad, bekleyen mesajların yerini bu yeni mesajla alır.

Sunucunuz bir push mesajı göndermek istediğinde bir push hizmetine web push protokolü isteği gönderir.

3. Adım: Etkinliği kullanıcının cihazına gönderin

Bir push mesajı gönderdikten sonra push hizmeti, aşağıdaki olaylardan biri gerçekleşene kadar mesajınızı sunucusunda saklar:

  1. Cihaz internete bağlanır ve push hizmeti iletiyi teslim eder.
  2. Mesajın süresi dolar. Bu durumda push hizmeti, iletiyi kuyruğundan kaldırır ve ileti hiçbir zaman teslim edilmez.

Push hizmeti bir mesaj yayınladığında tarayıcı mesajı alır, verilerin şifresini çözer ve hizmet çalışanınızda bir push etkinliği gönderir.

Hizmet çalışanı, "özel" bir JavaScript dosyasıdır. Tarayıcı, sayfanız açık olmadan bu JavaScript'i yürütebilir. Hatta tarayıcı kapalıyken bile bu JavaScript'i çalıştırabilir. Hizmet çalışanları, web sayfasında bulunmayan API'lere (ör. hizmet çalışanı komut dosyasında bulunmayan API'ler) de sahiptir.

Arka plan görevlerini hizmet çalışanının "push" etkinliğinde gerçekleştirebilirsiniz. Analytics çağrıları yapabilir, sayfaları çevrimdışı olarak önbelleğe alabilir ve bildirimler gösterebilirsiniz.

Bir push hizmetinden kullanıcının cihazına push mesajı gönderildiğinde hizmet çalışanınız bir push etkinliği alır.

Push mesajlaşma akışının tamamı budur.

Sonraki adımlar

Codelab uygulamaları