Bildirim Tetikleyicileri, ağ bağlantısı gerektirmeyen yerel bildirimleri planlamanıza olanak tanır. Bu nedenle, takvim uygulamaları gibi kullanım alanları için idealdir.
Bildirim tetikleyicileri nedir?
Web geliştiriciler, Web Notifications API'yi kullanarak bildirim görüntüleyebilir. 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, zaman veya konum gibi belirli bir koşul karşılandığında gösterilmesi gereken bildirimleri tetiklemek için 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 bildirimi 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
Step | 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
about://flags üzerinden etkinleştirme
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 anlık bildirimi göstermeye benzer. Tek fark, bildirim options
nesnesine değer olarak showTrigger
nesnesiyle birlikte bir TimestampTrigger
koşul özelliği 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ıklama
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 üç gün boyunca planlanmış, gösterilmiş ve kapatılmış bildirimler dahil olmak üzere tüm bildirim etkinliklerini 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 engeller. Bildirimler, site ayarlarında kullanıcı tarafından her zaman devre dışı bırakılabilir.
Şeffaflık
Push API'nin aksine bu API, ağa bağlı değildir. Bu nedenle, planlanmış bildirimlerin badge
, icon
ve image
özellikleri tarafından referans verilen resim kaynakları da dahil olmak üzere önceden gerekli tüm verilere sahip olması gerekir. Bu, planlanmış bir bildirimin gösterilmesinin geliştirici tarafından gözlemlenemeyeceği ve kullanıcı bildirimle etkileşimde bulunana kadar hizmet çalışanının uyandırılmayacağı anlamına gelir.
Dolayısıyla, geliştiricinin IP adresi coğrafi konum arama 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 mekanizmalar, 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'nin beklentilerinizi karşılamayan bir özelliği 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 yaşıyorsunuz?
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 üretmeyle ilgili basit 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, özelliklere öncelik vermemize ve diğer tarayıcı satıcılarına bu özellikleri desteklemenin ne kadar önemli olduğunu göstermemize yardımcı olur. #NotificationTriggers
hashtag'ini kullanarak @ChromiumDev hesabına tweet gönderin ve nerede, nasıl kullandığınızı bize bildirin.
Yararlı Bağlantılar
- Herkese açık açıklama
- İ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. Unsplash'teki Lukas Blazek'in hero resmi.