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.](https://web.dev/static/articles/push-notifications-overview/image/examples-notifications-940d01bcab836.png?authuser=5&hl=tr)
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:
- 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.
- İstemci cihazlara mesaj aktarmak için sunucu mantığı ekleniyor.
- 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
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.
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:
- Müşteri çevrimiçi olur ve push hizmeti, push mesajını iletir.
- İ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.
Sonraki adımlar
- Web Push Bildirimine Genel Bakış
- Push'un İşleyişi
- Kullanıcıya Abone Olma
- İzin Kullanıcı Deneyimi
- Web Push Kitaplıklarıyla Mesaj Gönderme
- Web Push Protokolü
- Push Etkinliklerini Yönetme
- Bildirim Görüntüleme
- Bildirim Davranışı
- Yaygın Bildirim Kalıpları
- Push Bildirimleriyle İlgili SSS
- Sık Karşılaşılan Sorunlar ve Hata Bildirme