Yayın tarihi: 24 Ekim 2019
Bildirim tetikleyicileri nedir?
Web geliştiriciler, Web Notifications API'yi kullanarak bildirimler gösterebilir. Bu özellik, kullanıcıyı son dakika haberleri veya alınan mesajlar gibi zamana duyarlı bilgiler hakkında bilgilendirmek için genellikle Push API ile birlikte kullanılır. Bildirimler, kullanıcının cihazında JavaScript çalıştırılarak gösterilir.
Push API'nin sorunu, belirli bir koşul (ör. zaman veya konum) karşılandığında gösterilmesi gereken bildirimleri tetikleme konusunda güvenilir olmamasıdır. Zamana dayalı koşul örneği, saat 14:00'te patronunuzla yapacağınız önemli bir toplantıyı size hatırlatan takvim bildirimidir. Konuma dayalı koşul örneği, marketinizin yakınlarına girdiğinizde süt almayı hatırlatan bir bildirimdir. Ağ bağlantısı veya uyku modu gibi pili korumaya yönelik özellikler, push tabanlı bildirimlerin teslimini geciktirebilir.
Bildirim tetikleyicileri, tetikleme koşullarıyla birlikte bildirimleri önceden planlamanıza olanak tanıyarak bu sorunu çözer. Böylece, ağ bağlantısı olmasa veya cihaz pil tasarrufu modunda olsa bile işletim sistemi bildirimi doğru zamanda gönderir.
Kullanım alanları
Takvim uygulamaları, yaklaşan toplantıları kullanıcıya hatırlatmak için zamana dayalı bildirim tetikleyicilerini kullanabilir. Bir takvim uygulamasının varsayılan bildirim şeması, toplantıdan bir saat önce ilk uyarı bildirimini, ardından beş dakika önce daha acil bir bildirim göstermek olabilir.
Bir TV ağı, kullanıcılara en sevdikleri TV programının veya bir konferansın canlı yayınının başlamak üzere olduğunu hatırlatabilir.
Saat dilimi dönüştürme siteleri, kullanıcılarının telefon konferansları veya görüntülü görüşmeler için alarm planlamasına olanak tanımak üzere zamana dayalı bildirim tetikleyicilerini kullanabilir.
Mevcut durum
| Adım | Durum |
|---|---|
| 1. Açıklayıcı oluşturma | Tamamlandı |
| 2. Spesifikasyonun ilk taslağını oluşturma | Başlatılmadı |
| 3. Geri bildirim toplayın ve tasarım üzerinde yineleme yapın. | Devam ediyor |
| 4. Kaynak denemesi | Eksiksiz |
| 5. Başlat | Başlatılmadı |
Bildirim tetikleyicilerini kullanma
Notification Triggers API'yi kaynak denemesi jetonu olmadan yerel olarak denemek için about://flags bölümünde #enable-experimental-web-platform-features işaretini etkinleştirin.
Özellik algılama
Tarayıcının Notification Triggers'ı destekleyip desteklemediğini showTrigger özelliğinin varlığını kontrol ederek öğrenebilirsiniz:
if ('showTrigger' in Notification.prototype) {
/* Notification Triggers supported */
}
Bildirim planlama
Bildirim planlamak, normal bir push bildirimi göstermeye benzer. Tek fark, bildirim options nesnesine değer olarak showTrigger koşul özelliğini TimestampTrigger nesnesiyle birlikte iletmeniz gerekmesidir.
const createScheduledNotification = async (tag, title, timestamp) => {
const registration = await navigator.serviceWorker.getRegistration();
registration.showNotification(title, {
tag: tag,
body: 'This notification was scheduled 30 seconds ago',
showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
});
};
Planlanmış bir bildirimi iptal etme
Planlanmış bildirimleri iptal etmek için öncelikle ServiceWorkerRegistration.getNotifications() üzerinden belirli bir etiketle eşleşen tüm bildirimlerin listesini isteyin. Planlanmış bildirimlerin listeye dahil edilmesi için includeTriggered işaretini iletmeniz gerektiğini unutmayın:
const cancelScheduledNotification = async (tag) => {
const registration = await navigator.serviceWorker.getRegistration();
const notifications = await registration.getNotifications({
tag: tag,
includeTriggered: true,
});
notifications.forEach((notification) => notification.close());
};
Hata ayıkla
Bildirimlerde hata ayıklamak için Chrome Geliştirici Araçları Bildirimler panelini kullanabilirsiniz. Hata ayıklamayı başlatmak için Olayları kaydetmeye başla'ya
veya Ctrl+E (Mac'te Command+E) tuşlarına basın. Chrome Geliştirici Araçları, Geliştirici Araçları kapalıyken bile planlanmış, gösterilen ve kapatılan bildirimler dahil olmak üzere tüm bildirim etkinliklerini üç gün boyunca kaydeder.
Demo
Bildirim tetikleyicilerin nasıl çalıştığını bir demoda görebilirsiniz. Bu demoda bildirimleri planlayabilir, planlanmış bildirimleri listeleyebilir ve iptal edebilirsiniz.

Güvenlik ve izinler
Chrome Ekibi, Notification Triggers API'yi Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme'de tanımlanan temel ilkeleri (kullanıcı kontrolü, şeffaflık ve ergonomi dahil) kullanarak tasarladı ve uyguladı. Bu API, hizmet çalışanları gerektirdiğinden güvenli bir bağlam da gerektirir. API'nin kullanılması için normal push bildirimleriyle aynı izin gerekir.
Kullanıcı denetimi
Bu API yalnızca ServiceWorkerRegistration bağlamında kullanılabilir. Bu, gerekli tüm verilerin aynı bağlamda depolandığı ve hizmet çalışanı silindiğinde veya kullanıcı kaynak için tüm site verilerini sildiğinde otomatik olarak silindiği anlamına gelir. Çerezlerin engellenmesi, hizmet çalışanlarının Chrome'a yüklenmesini ve dolayısıyla bu API'nin kullanılmasını da önler. Bildirimler, site ayarlarında kullanıcı tarafından her zaman devre dışı bırakılabilir.
Şeffaflık
Bu API, Push API'nin aksine ağa bağlı değildir. Bu nedenle, planlanmış bildirimlerin badge, icon ve image özellikleriyle referans verilen resim kaynakları da dahil olmak üzere tüm gerekli verileri önceden alması gerekir. Bu, planlanmış bir bildirimin gösterilmesinin geliştirici tarafından gözlemlenemeyeceği ve kullanıcı bildirimle etkileşime girene kadar hizmet çalışanının uyandırılmayacağı anlamına gelir.
Makalenin yayınlandığı tarih itibarıyla, geliştiricinin IP adresi coğrafi konum araması gibi gizliliği ihlal edebilecek yaklaşımlar aracılığıyla kullanıcı hakkında bilgi edinmesinin bilinen bir yolu yoktur. Bu tasarım, özelliğin isteğe bağlı olarak işletim sistemi tarafından sağlanan planlama mekanizmalarından (ör. Android'in AlarmManager) yararlanmasına da olanak tanır. Bu mekanizma, pilin korunmasına yardımcı olur.
Geri bildirim
Chrome Ekibi, Bildirim Tetikleyicileri ile ilgili deneyimlerinizi öğrenmek istiyor.
API tasarımı hakkında bilgi verin
API ile ilgili beklentilerinizi karşılamayan bir durum var mı? Yoksa fikrinizi uygulamak için eksik yöntemler veya özellikler mi var? Güvenlik modeliyle ilgili sorunuz veya yorumunuz mu var? Notification Triggers GitHub deposunda bir spesifikasyon sorunu bildirin veya düşüncelerinizi mevcut bir soruna ekleyin.
Uygulamayla ilgili sorun mu var?
Chrome'un uygulamasında bir hata mı buldunuz? Yoksa uygulama, spesifikasyondan farklı mı?
new.crbug.com adresinden hata bildirin. Mümkün olduğunca fazla ayrıntı ve yeniden üretme talimatları eklediğinizden emin olun ve Bileşenler'i UI>Notifications olarak ayarlayın.
API'yi kullanmayı mı planlıyorsunuz?
Sitenizde bildirim tetikleyicilerini kullanmayı mı planlıyorsunuz? Herkese açık desteğiniz, özellikleri önceliklendirmemize yardımcı olur ve diğer tarayıcı satıcılarına bu özellikleri desteklemenin ne kadar önemli olduğunu gösterir. #NotificationTriggers hashtag'ini kullanarak @ChromiumDev adresine tweet gönderin ve nerede, nasıl kullandığınızı bize bildirin.
Yararlı Bağlantılar
- Herkese açık açıklayıcı
- İzleme hatası
- ChromeStatus.com girişi
- Blink Bileşeni:
UI>Notifications
Teşekkür
Bildirim Tetikleyicileri, Richard Knoll tarafından uygulandı ve açıklayıcı metin, Richard'ın katkılarıyla Peter Beverloo tarafından yazıldı. Bu makaleyi inceleyen kişiler: Joe Medley, Pete LePage, Richard ve Peter.