Push nasıl çalışır?

Matt Gaunt

API'ya girmeden önce, aktarma işlemini genel hatlarıyla, baştan sona ele alalım. Daha sonra her konu veya API'nin üzerinden geçerken bunun nasıl ve neden önemli olduğu hakkında bir fikir edineceksiniz.

Push özelliğini uygulamanın üç temel adımı şunlardır:

  1. Kullanıcıyı push işlemi yapmaya abone yapmak için istemci tarafı mantığını ekleme (web uygulamanızda kullanıcıyı mesaj aktarmaya kaydeden JavaScript ve kullanıcı arayüzü).
  2. Arka uçtan / uygulamanızdan gelen ve kullanıcının cihazına push mesajı tetikleyen API çağrısı.
  3. Push cihaza ulaştığında bir "push etkinliği" alacak hizmet çalışanı JavaScript dosyası. Bu JavaScript'te bir bildirim görüntüleyebilirsiniz.

Şimdi bu adımların her birinin neleri kapsadığını biraz daha ayrıntılı olarak inceleyelim.

1. Adım: İstemci Tarafı

İlk adım, mesajlaşmaya itmek için bir kullanıcıya "abone olmak".

Bir kullanıcıya abone olmak için iki şey gerekir. Birincisi, kullanıcıdan push mesajları gönderebilmesi için izin almaktır. İkincisi, tarayıcıdan PushSubscription alma.

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

Bu işlemlerin tamamı JavaScript'te Push API'sı kullanılarak gerçekleştirilir.

Tarayıcı Desteği

  • 42
  • 17
  • 44
  • 16

Kaynak

Bir kullanıcıya abone olmadan önce, daha sonra ele alacağımız bir dizi "uygulama sunucusu anahtarı" oluşturmanız gerekir.

VAPID anahtarları olarak da bilinen uygulama sunucusu anahtarları, sunucunuza özgüdür. Bunlar, bir push hizmetinin bir kullanıcıya hangi uygulama sunucusunun abone olduğunu bilmesine ve kullanıcının push mesajlarını tetikleyen sunucunun aynı sunucu olduğundan emin olmasına olanak tanır.

Kullanıcının abone olup PushSubscription edindikten sonra PushSubscription ayrıntılarını arka ucunuza / sunucunuza göndermeniz gerekir. Sunucunuzda bu aboneliği bir veritabanına kaydedecek ve bu kullanıcıya push mesajı göndermek için kullanacaksınız.

Push Aboneliğini arka ucunuza 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ğine dair tüm ölçütleri içerir. Normalde bu API çağrısı sunucunuzdan yapılır.

Kendinize sorabileceğiniz bazı sorular:

  • Push hizmeti kimdir ve nedir?
  • API neye benziyor? JSON, XML veya başka bir şey mi?
  • API neler yapabilir?

Push hizmeti kimdir ve nedir?

Push hizmeti bir ağ isteği alır, bunu 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 herhangi bir aktarma hizmetini kullanabilir. Bu, geliştiricilerin kontrolü olamayacağı bir şeydir. Her push hizmeti aynı API çağrısını beklediği için bu bir sorun değildir. Yani push hizmetinin kim olduğuyla ilgilenmeniz gerekmez. Tek yapmanız gereken API çağrınızın geçerli olduğundan emin olmaktır.

Push mesajını tetikleyecek uygun URL'yi (yani aktarma hizmetinin URL'sini) almak için 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 kullanıcıya özeldir. "Bir tür-benzersiz-kimlik-1234" ifadesi gösterilir. Push ile çalışmaya başladığınızda bu kalıbı göreceksiniz.

Abonelikteki anahtarlar daha sonra ele alınacaktır.

API neye benziyor?

Her web aktarma hizmetinin aynı API çağrısını beklediğini belirtmiştim. Bu API, Web Push Protokolü'dür. Push hizmetine API çağrısı yapma yöntemini tanımlayan bir IETF standardıdır.

API çağrısı, belirli başlıkların ayarlanmasını ve verilerin baytlardan oluşan bir akış olmasını gerektirir. Bu API çağrısını bizim için yapabilen kitaplıklara ve bunu kendimiz nasıl yapacağımıza göz atacağız.

API neler yapabilir?

API veri içeren veya içermeyen bir kullanıcıya mesaj göndermek için bir yol sunar ve mesajın nasıl gönderileceğine yönelik talimatlar sağlar.

Push mesajıyla gönderdiğiniz veriler şifrelenmelidir. Bunun nedeni, başka herhangi bir kişi olabilecek push hizmetlerinin push mesajıyla gönderilen verileri görüntülemesini engellemesidir. Bu, hangi push hizmetinin kullanılacağına karar verenin tarayıcı olduğu için önemlidir. Bu, güvenli veya emniyetli olmayan bir push hizmeti kullanarak tarayıcılara kapıyı açabilir.

Push mesajını tetiklediğinizde push hizmeti, API çağrısını alır ve mesajı sıraya alır. Bu mesaj, kullanıcının cihazı online olana ve push hizmeti mesajları teslim edene kadar sırada kalır. Push hizmetine verebileceğiniz talimatlar, push mesajının nasıl sıraya alındığını tanımlar.

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

  • Push mesajı için geçerlilik süresi. Bu, bir mesajın 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 hizmetinin yalnızca yüksek öncelikli mesajlar iletip kullanıcının pil ömrünü koruduğu durumlarda yararlıdır.

  • Push mesajına "konu" adı verin. Bu ad, bekleyen tüm mesajların yerini bu yeni mesajla değiştirir.

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

3. adım: Etkinliği kullanıcının cihazına aktarın

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

  1. Cihaz çevrimiçi olur ve push hizmeti mesajı iletir.
  2. İletinin süresi dolar. Bu durumda push hizmeti, mesajı sıradan kaldırır ve hiçbir zaman teslim edilmez.

Push hizmeti bir mesaj gönderdiğinde tarayıcı mesajı alır, tüm verilerin şifresini çözer ve Service Worker'ınızda bir push etkinliği dağıtır.

Hizmet çalışanı "özel" bir JavaScript dosyasıdır. Tarayıcı, sayfanız açılmadan bu JavaScript'i çalıştırabilir. Tarayıcı kapalıyken bu JavaScript'i bile yürütebilir. Service Worker'ın, web sayfasında bulunmayan push gibi API'leri de vardır (hizmet çalışanı komut dosyasından kullanılamayan API'ler).

Arka plan görevlerini gerçekleştirebilirsiniz, Service Worker'ın "push" etkinliği içinde. Analiz çağrıları yapabilir, sayfaları çevrimdışı ö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 mesajlarının akışı burada özetlenir.

Sonraki adımlar

Code Labs