Bildirim Tetikleyicileri API'si

Bildirim Tetikleyicileri, ağ bağlantısı gerektirmeyen yerel bildirimleri planlamanıza olanak tanır. Bu da takvim uygulamaları gibi kullanım alanları için idealdir.

Bildirim Tetikleyicileri nedir?

Web geliştiricileri, bildirimleri Web Notifications API'yi kullanarak görüntüleyebilir. Bu özellik genellikle kullanıcıyı son dakika haberleri veya alınan mesajlar gibi zamana bağlı bilgiler konusunda bilgilendirmek için Push API ile birlikte kullanılır. Bildirimler, kullanıcının cihazında JavaScript çalıştırılarak gösterilir.

Push API'deki sorun, zaman veya konum gibi belirli bir koşul karşılandığında gösterilmesi gereken bildirimleri tetiklemenin güvenilir olmamasıdır. Zamana dayalı koşullara örnek olarak 14:00'da patronunuzla yapacağınız önemli bir toplantıyı hatırlatan takvim bildirimi verilebilir. Konuma dayalı durum örneği, marketinizin yakınlarına girdiğinizde süt almanızı hatırlatan bir bildirimdir. Ağ bağlantısı veya doz modu gibi pili koruyan özellikler, push tabanlı bildirimlerin iletimini geciktirebilir.

Bildirim tetikleyicileri, bildirimleri tetikleme durumlarıyla önceden planlamanıza izin vererek bu sorunu çözer. Böylece, ağ bağlantısı olmasa veya cihaz pil tasarrufu modunda olsa bile işletim sistemi bildirimi doğru zamanda teslim eder.

Kullanım alanları

Takvim uygulamaları, bir kullanıcıya yaklaşan toplantıları hatırlatmak için zamana dayalı bildirim tetikleyicileri kullanabilir. Bir takvim uygulamasının varsayılan bildirim şeması, toplantıdan bir saat önce ilk uyarı bildirimini ve beş dakika önce başka bir daha acil bildirim göstermek olabilir.

Bir TV ağı, kullanıcılara favori TV programının başlamak üzere veya bir konferans 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 amacıyla zamana dayalı bildirim tetikleyicileri kullanabilir.

Mevcut durum

Adım Durum
1. Açıklayıcı oluşturun Tamamlandı
2. İlk spesifikasyon taslağını oluşturun Başlatılmadı
3. Geri bildirim alın ve tasarım için iterasyon yapın. Devam ediyor
4. Kaynak denemesi Eksiksiz
5. Lansman Başlatılmadı

Bildirim tetikleyicileri nasıl kullanılır?

about://flags aracılığıyla etkinleştirme

Notification Triggers API'yi kaynak deneme jetonu olmadan yerel olarak denemek için about://flags uygulamasında #enable-experimental-web-platform-features işaretini etkinleştirin.

Özellik algılama

showTrigger özelliğinin olup olmadığını kontrol ederek tarayıcının Bildirim Tetikleyicilerini destekleyip desteklemediğini öğrenebilirsiniz:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

Bildirim planlama

Bildirim planlamak, normal push bildirimi göstermeye benzer. Tek fark, bildirimin options nesnesine değer olarak TimestampTrigger nesnesiyle bir showTrigger koşul özelliği iletmeniz gerekir.

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 önce ServiceWorkerRegistration.getNotifications() tarihine kadar belirli bir etiketle eşleşen tüm bildirimlerin listesini isteyin. Planlanmış bildirimlerin listeye dahil edilmesi için includeTriggered işaretini geçmeniz 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

Hata ayıklamak için Chrome Geliştirici Araçları Bildirimler panelini kullanabilirsiniz. Hata ayıklamayı başlatmak için Etkinlikleri kaydetmeyi başlat Etkinlikleri kaydetmeye başla veya Control+E (Mac'te Command+E) tuşlarına basın. Chrome Geliştirici Araçları; planlanmış, gösterilen ve kapalı bildirimler de dahil olmak üzere tüm bildirim etkinliklerini, Geliştirici Araçları kapalıyken bile üç gün boyunca kaydeder.

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

Demo

Demoda Bildirim Tetikleyicilerini çalışırken görebilirsiniz. Bu sayede bildirimleri planlamanıza, planlanan bildirimleri listelemenize ve iptal etmenize olanak tanır. Kaynak kodu Glitch'te mevcuttur.

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

Güvenlik ve izinler

Chrome ekibi, kullanıcı kontrolü, şeffaflık ve ergonomik gibi Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme bölümünde tanımlanan temel ilkeleri kullanarak Notification Triggers API'yi tasarlamış ve uygulamıştır. Bu API, hizmet çalışanları gerektirdiğinden güvenli bir bağlam da gerektirir. API'yi kullanmak, normal push bildirimleriyle aynı izni gerektirir.

Kullanıcı denetimi

Bu API yalnızca ServiceWorkerRegistration bağlamında kullanılabilir. Bu, gerekli tüm verilerin aynı bağlamda depolandığı ve Service Worker silindiğinde veya kullanıcı kaynakla ilgili tüm site verilerini sildiğinde otomatik olarak silineceği anlamına gelir. Çerezleri engellemek, hizmet çalışanlarının Chrome'a yüklenmesini ve dolayısıyla bu API'nin kullanılmasını da engeller. Site ayarlarında site için bildirimler kullanıcı tarafından her zaman devre dışı bırakılabilir.

Şeffaflık

Push API'sinin aksine bu API ağa bağlı değildir. Bu da, planlı bildirimlerde badge, icon ve image özelliklerinin referans verdiği görüntü kaynakları dahil olmak üzere gerekli tüm verilerin önceden gerekli olduğu anlamına gelir. Bu, planlanmış bir bildirimin gösterilmesinin geliştirici tarafından gözlemlenmeyeceği anlamına gelir ve kullanıcı bildirimle etkileşime girene kadar Service Worker'ı uyandırmayı içermez. Dolayısıyla, geliştiricinin şu anda IP adresi coğrafi konum araması gibi gizliliği ihlal eden yaklaşımlar aracılığıyla kullanıcı hakkında bilgi edinebileceği bilinen bir yol yoktur. Bu tasarım ayrıca özelliğin, pil tasarrufu yapmaya yardımcı olan Android AlarmManager gibi işletim sistemi tarafından sağlanan planlama mekanizmalarından isteğe bağlı olarak yararlanmasına da olanak tanır.

Geri bildirim

Chrome ekibi, bildirim tetikleyicileriyle ilgili deneyimleriniz hakkında bilgi almak istiyor.

Bize API tasarımı hakkında bilgi verin

API'de beklediğiniz gibi çalışmayan bir şey mi var? Yoksa fikrinizi uygulamak için ihtiyacınız olan yöntemler veya özellikler mi var? Güvenlik modeliyle ilgili sorunuz veya yorumunuz mu var? Bildirim Tetikleyicileri GitHub deposunda spesifikasyon sorunu bildirin veya mevcut bir soruna düşüncelerinizi ekleyin.

Uygulamayla ilgili bir sorun mu var?

Chrome'un uygulanmasıyla ilgili bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı? new.crbug.com adresinde bir hata bildiriminde bulunun. Mümkün olduğunca çok ayrıntı eklediğinizden, yeniden oluşturma için basit talimatlar sağladığınızdan ve Bileşenler'i UI>Notifications olarak ayarladığınızdan emin olun. Glitch, hata yeniden oluşturma işlemlerini hızlı ve kolay bir şekilde paylaşmak için idealdir.

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ı tedarikçilerine bunları desteklemenin ne kadar önemli olduğunu gösterir. #NotificationTriggers hashtag'ini kullanarak @ChromiumDev'e bir tweet gönderin ve etiketi nerede ve nasıl kullandığınızı bize bildirin.

Yararlı Bağlantılar

Teşekkür

Bildirim Tetikleyicileri, Richard Knoll ve Peter Beverloo tarafından yazılan açıklayıcı tarafından Richard'ın katkılarıyla birlikte uygulandı. Şu kullanıcılar makaleyi incelemiştir: Joe Medley, Pete LePage ve Richard ve Peter. Unsplash'teki Lukas Blazek'ten hero resim.