Bildirim Tetikleyicileri API'si

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 Etkinlikleri kaydetmeye başlama 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.

Planlanmış bir bildirim etkinliği, Uygulama panelinde bulunan Chrome Geliştirici Araçları'nın Bildirimler bölmesine kaydedildi.
Planlanmış bir bildirim.
Gösterilen bir bildirim etkinliği, Chrome Geliştirici Araçları'nın Bildirimler bölmesine kaydedildi.
Gösterilen bir bildirim.

Demo

Bildirim tetikleyicilerin nasıl çalıştığını bir demoda görebilirsiniz. Bu demoda bildirimleri planlayabilir, planlanmış bildirimleri listeleyebilir ve iptal edebilirsiniz.

Bildirim Tetikleyicileri demo web uygulamasının ekran görüntüsü.
Bildirim Tetikleyicileri demosunu inceleyin.

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

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.