Push nasıl çalışır?

Matt Gaunt

API'ye geçmeden önce, push bildirimlerine baştan sona genel bir bakış atalım. Daha sonra tek tek konuları veya API'leri incelediğimizde, bu kavramların nasıl ve neden önemli olduğu hakkında fikir sahibi olacaksınız.

Push bildirimlerini uygulamak için üç temel adım vardır:

  1. Kullanıcıyı push bildirimlerine abone etmek için istemci tarafı mantığını ekleme (ör. kullanıcının push mesajlarına kaydolduğu web uygulamanızdaki JavaScript ve kullanıcı arayüzü).
  2. Arka uçunuzdan / uygulamanızdan gelen ve kullanıcının cihazına push mesajı gönderilmesini tetikleyen API çağrısı.
  3. Push bildirimi cihaza ulaştığında "push etkinliği" alacak olan hizmet çalışanı JavaScript dosyası. Bildirimi bu JavaScript'te gösterebilirsiniz.

Şimdi bu adımların her birinin ne anlama geldiğine biraz daha ayrıntılı olarak bakalım.

1. adım: İstemci tarafı

İlk adım, kullanıcıyı anlık mesajlaşmaya "abone etmektir".

Bir kullanıcıyı abone etmek için iki şey gerekir. İlk olarak, kullanıcıdan push mesajları göndermek için izin alınmalıdır. İkincisi, tarayıcıdan PushSubscription hatası alınıyor.

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

Bu işlemlerin tümü Push API ile JavaScript'te yapılır.

Browser Support

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

Source

Bir kullanıcıyı abone yapmadan ö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 özeldir. Bu izinler, bir push hizmetinin hangi uygulama sunucusunun kullanıcıyı abone ettiğini bilmesini sağlar ve push iletilerini kullanıcıya tetikleyen sunucunun aynı sunucu olmasını sağlar.

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

1. Push Mesajları Gönderme İzni Alma 2. PushSubscription'ı alın. 3. PushSubscription'ı Sunucunuza Gönderme

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ı normalde sunucunuzdan yapılır.

Kendinize sorabileceğiniz bazı sorular:

  • Anlık bildirim hizmeti nedir ve kimler bu hizmeti kullanabilir?
  • API nasıl görünüyor? JSON, XML veya başka bir biçimde mi?
  • API neler yapabilir?

Anlık bildirim hizmeti nedir ve kimler bu hizmeti kullanabilir?

Push hizmeti bir ağ isteği alır, doğrular ve uygun tarayıcıya bir push mesajı gönderir. Tarayıcı çevrimdışıysa ileti, tarayıcı çevrimiçi olana kadar 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 bir sorun değildir. Yani, push hizmetinin kim olduğuyla ilgilenmeniz gerekmez. Yalnızca API çağrınızın geçerli olduğundan emin olmanız gerekir.

Push mesajı tetiklemek için uygun URL'yi (ör. push hizmetinin URL'si) almak istiyorsanız PushSubscription içindeki endpoint değerine bakmanız yeterlidir.

Aşağıda, PushSubscription'dan alacağınız değerlere ilişkin 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/ olur. Push hizmeti "random-push-service.com" olur ve her uç nokta, "some-kind-of-unique-id-1234" ile belirtildiği gibi kullanıcıya özeldir. 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üyor?

Her web push hizmetinin aynı API çağrısını beklediğini belirtmiştim. Bu API, Web Push Protocol'dür. Bu, 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 bir bayt akışı olması gerekir. Bu API çağrısını bizim için yapabilecek kitaplıkların yanı sıra bu işlemi kendimiz nasıl yapacağımızı da inceleyeceğiz.

API neler yapabilir?

API, bir kullanıcıya veriyle veya verisiz mesaj göndermenin bir yolunu sunar ve mesajın nasıl gönderileceğine dair talimatlar sağlar.

Anlık bildirim ile gönderdiğiniz veriler şifrelenmelidir. Bunun nedeni, push hizmetlerinin (herhangi biri olabilir) push mesajıyla gönderilen verileri görüntülemesini engellemektir. Tarayıcının hangi push hizmetinin kullanılacağına karar verdiği göz önüne alındığında bu önemlidir. Bu durum, tarayıcıların güvenli olmayan bir push hizmetini kullanmasına yol açabilir.

Bir push mesajı tetiklediğinizde push hizmeti, API çağrısını alır ve mesajı sıraya koyar. Bu mesaj, kullanıcının cihazı internete bağlanana ve push hizmeti mesajları teslim edene kadar sıraya alınmış olarak kalır. Push hizmetine verebileceğiniz talimatlar, push mesajının nasıl sıraya alınacağını tanımlar.

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

  • Anlık iletinin geçerlilik süresi. Bu, bir iletinin kaldırılmadan ve teslim edilmeden önce ne kadar süreyle sıraya alınması gerektiğini tanımlar.

  • İletinin aciliyetini tanımlayın. Bu, push hizmeti yalnızca yüksek öncelikli mesajları ileterek kullanıcının pil ömrünü koruduğu durumlarda faydalıdır.

  • Anlık iletiye, bekleyen iletilerin yerine bu yeni iletinin gönderilmesini sağlayacak bir "konu" adı verin.

Sunucunuz bir anlık bildirim göndermek istediğinde bir anlık bildirim hizmetine web anlık bildirim protokolü isteğinde bulunur. Bu şekilde iletiler cihaza ulaşır.

3. adım: Kullanıcının cihazında etkinliği gönderin

Push mesajı gönderildikten sonra, aşağıdaki olaylardan biri gerçekleşene kadar push hizmeti mesajınızı sunucusunda tutar:

  1. Cihaz internete bağlandığında push hizmeti mesajı teslim eder.
  2. Mesajın süresi dolar. Bu durumda, push hizmeti iletiyi sırasından kaldırır ve ileti hiçbir zaman teslim edilmez.

Push hizmeti bir iletiyi teslim ettiğinde tarayıcı iletiyi alır, verilerin şifresini çözer ve hizmet çalışanı içinde bir push etkinliği gönderir.

Hizmet çalışanı, "özel" bir JavaScript dosyasıdır. Tarayıcı, bu JavaScript'i sayfanız açık olmadan çalıştırabilir. Tarayıcı kapalıyken bile bu JavaScript'i çalıştırabilir. Hizmet çalışanında, web sayfasında kullanılamayan (ör. hizmet çalışanı komut dosyası dışında kullanılamayan) API'ler de bulunur.

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

1. Mesaj Cihaza Ulaşır. 2. Tarayıcı, hizmet çalışanını uyandırır. 3. Push Event is Dispatched.

Push mesajlaşmayla ilgili tüm akış bu şekildedir.

Sonraki adımlar

Kod laboratuvarları