Tarayıcı kapalıyken push neden çalışmıyor?
Bu soru, büyük ölçüde mantık yürütmeyi ve anlamayı zorlaştıran birkaç senaryo nedeniyle sık sık sorulur.
Android ile başlayalım. Android OS, push mesajlarını dinleyecek ve bir mesaj aldığında, uygulamanın kapalı olup olmadığına bakılmaksızın push mesajını işlemek için uygun Android uygulamasını uyandıracak şekilde tasarlanmıştır.
Bu, Android'deki tüm tarayıcılar için tamamen aynıdır. Tarayıcı, push mesajı alındığında uyandırılır ve ardından hizmet çalışanınızı uyandırıp push etkinliğini gönderir.
Masaüstü işletim sistemlerinde bu durum daha ayrıntılıdır ve farklı senaryoları açıklamaya yardımcı olacak görsel bir gösterge olduğu için Mac OS X'te açıklamak daha kolaydır.
Mac OS X'te, bir programın çalışıp çalışmadığını dock'taki uygulama simgesinin altındaki işaretten anlayabilirsiniz.
Aşağıdaki dock'ta bulunan iki Chrome simgesini karşılaştırırsanız soldaki simgenin altındaki işaret, bu uygulamanın çalıştığını gösterir. Sağdaki Chrome ise çalışmıyor. Bu nedenle, altında işaret yoktur.
Masaüstünde push mesajları alma bağlamında, tarayıcı çalışırken (yani simgenin altında işaret varken) mesaj alırsınız.
Bu, tarayıcıda açık pencere olmasa bile tarayıcı arka planda çalıştığı için hizmet çalışanınızda push mesajını almaya devam edeceğiniz anlamına gelir.
Anlık bildirimler yalnızca tarayıcı tamamen kapalıyken, yani hiç çalışmıyorken (işaret yok) alınmaz. Aynı durum Windows için de geçerlidir ancak Chrome'un arka planda çalışıp çalışmadığını belirlemek biraz daha zordur.
Ana ekran web uygulamamın push bildiriminden tam ekran açılmasını nasıl sağlarım?
Android için Chrome'da, ana ekrana bir web uygulaması eklenebilir ve web uygulaması ana ekrandan açıldığında, aşağıda gösterildiği gibi URL çubuğu olmadan tam ekran modunda başlatılabilir.
Geliştiriciler, bu deneyimin tutarlı olması için tıklanan bildirimlerinin web uygulamalarını tam ekranda açmasını ister.
Chrome bunu "bir şekilde" uyguladı ancak güvenilir olmadığını ve mantıklı bir şekilde açıklamanın zor olduğunu görebilirsiniz. İlgili uygulama ayrıntıları şunlardır:
Bu, kullanıcınız sitenizi ana ekran simgesi üzerinden oldukça düzenli bir şekilde ziyaret etmediği sürece bildirimlerinizin normal tarayıcı kullanıcı arayüzünde açılacağı anlamına gelir.
Bu sorun üzerinde daha fazla çalışılacaktır.
Bu, web soketlerinden neden daha iyi?
Tarayıcı penceresi kapatıldığında hizmet çalışanı etkinleştirilebilir. Web soketi yalnızca tarayıcı ve web sayfası açık kaldığı sürece etkin olur.
GCM, FCM, Web Push ve Chrome arasındaki ilişki nedir?
Bu sorunun birkaç yönü vardır ve açıklamanın en kolay yolu, web push ve Chrome'un geçmişini incelemektir. (Merak etmeyin, kısa bir video.)
Aralık 2014
Chrome, web push özelliğini ilk kez uyguladığında, sunucudan tarayıcıya push mesajlarının gönderilmesini desteklemek için Google Cloud Messaging (GCM) kullanıyordu.
Bu, web push değildi. Chrome ve GCM'nin bu erken kurulumunun "gerçek" web push olmamasının birkaç nedeni vardır.
- GCM, geliştiricilerin Google Developers Console'da bir hesap oluşturmasını gerektirir.
- Chrome ve GCM'nin mesajlaşmayı doğru şekilde ayarlayabilmesi için bir web uygulaması tarafından paylaşılacak özel bir gönderen kimliği gerekiyordu.
- GCM'nin sunucuları, web standardı olmayan özel bir API isteğini kabul etti.
Temmuz 2016
Temmuz ayında web push'a yeni bir özellik eklendi: Uygulama Sunucusu Anahtarları (veya spesifikasyonun bilinen adıyla VAPID). Chrome bu yeni API için destek eklediğinde mesajlaşma hizmeti olarak GCM yerine Firebase Cloud Messaging'i (FCM olarak da bilinir) kullandı. Bu, birkaç nedenden dolayı önemlidir:
- Chrome ve uygulama sunucusu anahtarları için Google veya Firebase ile herhangi bir proje oluşturulması gerekmez. Bu kadar basit.
- FCM, tüm web push hizmetlerinin destekleyeceği API olan web push protokolünü destekler. Bu, bir tarayıcının hangi push hizmetini kullandığına bakılmaksızın aynı türde istekte bulunmanızın yeterli olduğu ve mesajın gönderileceği anlamına gelir.
Neden bugün kafa karıştırıcı?
Web push konusunda yazılan içeriklerin çoğu GCM veya FCM'ye atıfta bulunduğundan şu anda büyük bir kafa karışıklığı var. İçerikte GCM'den bahsediliyorsa bu durum, içeriğin eski olduğunu veya Chrome'a çok fazla odaklandığını gösterir. (Eski gönderilerimin birçoğunda bunu yaptığımı itiraf etmeliyim.)
Bunun yerine, web push'un mesaj gönderme ve alma işlemlerini yönetmek için push hizmeti kullanan bir tarayıcıdan oluştuğunu ve push hizmetinin "web push protokolü" isteğini kabul edeceğini düşünün. Bu şekilde düşünürseniz hangi tarayıcıyı ve hangi push hizmetini kullandığını göz ardı edip işe koyulabilirsiniz.
Bu kılavuz, web push'un standart yaklaşımına odaklanacak şekilde yazılmıştır ve diğer her şeyi kasıtlı olarak yoksayar.
Firebase'in JavaScript SDK'sı vardır. Nedir ve neden önemlidir?
Firebase web SDK'sını bulup JavaScript için bir mesajlaşma API'si olduğunu fark edenler, bunun web push'tan ne farkı olduğunu merak ediyor olabilir.
Mesajlaşma SDK'sı (Firebase Cloud Messaging JS SDK olarak bilinir), web push bildirimlerini uygulamayı kolaylaştırmak için arka planda birkaç işlem yapar.
PushSubscriptionve çeşitli alanları hakkında endişelenmek yerine yalnızca FCM jetonu (bir dize) hakkında endişelenmeniz gerekir.- Her kullanıcı için jetonları kullanarak push mesajlarını tetiklemek üzere özel FCM API'yi kullanabilirsiniz. Bu API, yüklerin şifrelenmesini gerektirmez. POST istek gövdesinde düz metin yükü gönderebilirsiniz.
- FCM'nin tescilli API'si, özel özellikleri destekler. Örneğin, FCM Topics (Web'de de çalışır ancak bu konuda yeterli doküman yoktur).
- Son olarak FCM; Android, iOS ve web'i desteklediğinden bazı ekipler için mevcut projelerde çalışmak daha kolaydır.
Bu API, arka planda web push'u kullanır ancak amacı bunu soyutlamaktır.
Önceki soruda da belirttiğim gibi, web push'u yalnızca bir tarayıcı ve push hizmeti olarak düşünürseniz Firebase'deki Messaging SDK'sını web push'un uygulanmasını basitleştiren bir kitaplık olarak düşünebilirsiniz.
Sonraki adımlar
- Web Push Bildirimlerine Genel Bakış
- Push'un İşleyiş Şekli
- Kullanıcı abone etme
- İzin kullanıcı deneyimi
- Web Push kitaplıklarıyla mesaj gönderme
- Web Push Protokolü
- Push etkinliklerini işleme
- Bildirim gösterme
- Bildirim Davranışı
- Yaygın Bildirim Kalıpları
- Push bildirimleri hakkında SSS
- Sık Karşılaşılan Sorunlar ve Hata Bildirme