Bildirim Tetikleyicileri API'si

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

Bildirim tetikleyicileri nedir?

Web geliştiricileri 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, zaman veya konum gibi belirli bir koşul karşılandığında gösterilmesi gereken bildirimleri tetikleme konusunda güvenilir olmamasıdır. Zamana dayalı koşul örneği olarak, 14:00'te patronunuzla yapacağınız önemli bir toplantıyı hatırlatan bir takvim bildirimi verilebilir. Konum tabanlı koşul örneği olarak, marketinizin yakınına geldiğinizde süt almanızı hatırlatan bir bildirim verilebilir. Ağ bağlantısı veya pil tasarrufu sağlayan özellikler (ör. Uyku modu) push tabanlı bildirimlerin teslimini geciktirebilir.

Bildirim tetikleyicileri, bildirimleri tetikleyici koşullarıyla birlikte önceden planlamanıza olanak tanıyarak bu sorunu çözer. Böylece işletim sistemi, ağ bağlantısı olmasa veya cihaz pil tasarrufu modunda olsa bile bildirimi doğru zamanda gönderir.

Kullanım alanları

Takvim uygulamaları, kullanıcılara 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 ardından beş dakika önce daha acil bir bildirim göstermek olabilir.

Bir TV kanalı, kullanıcılara en sevdikleri TV programının veya konferansın canlı yayınının başlamak üzere olduğunu hatırlatabilir.

Saat dilimi dönüşümü siteleri, kullanıcılarının telefon konferansları veya görüntülü görüşmeler için alarmlar planlamasına izin vermek amacıyla zamana dayalı bildirim tetikleyicileri kullanabilir.

Mevcut durum

Step Durum
1. Açıklayıcı oluşturun Tamamlandı
2. Spesifikasyonun ilk taslağını oluşturma Başlatılmadı
3. Geri bildirim alın ve tasarım için iterasyon yapın. Devam ediyor
4. Kaynak denemesi Tamamlandı
5. Başlat Başlatılmadı

Bildirim tetikleyicilerini kullanma

about://flags üzerinden etkinleştirme

Notification Triggers API'yi kaynak deneme jetonu olmadan yerel olarak denemek için about://flags dosyası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 planlama, normal bir push bildirimi göstermeye benzer. Tek fark, bildirimin options nesnesine değer olarak bir TimestampTrigger nesnesi içeren bir showTrigger koşul mülkü göndermeniz gerektiğidir.

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ıklama işlemini başlatmak için Etkinlikleri kaydetmeye başlaEtkinlikleri kaydetmeye başlama simgesine veya Ctrl+E (Mac'te Komut+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, Chrome Geliştirici Araçları'nın Uygulama panelinde bulunan Bildirimler bölmesine kaydedildi.
Planlanmış bildirim.
Gösterilen bir bildirim etkinliği, Chrome Geliştirici Araçları'nın Bildirimler bölmesine kaydedilmiştir.
Gösterilen bildirim.

Demo

Bildirim tetikleyicileri, demo'da çalışırken görebilirsiniz. Bu demo, bildirimleri planlamanıza, planlanmış 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, Notification Triggers API'yi tasarlarken ve uygularken kullanıcı denetimi, şeffaflık ve ergonomi gibi Güçlü Web Platformu Özelliklerine Erişimi Kontrol Etme başlıklı makalede belirtilen temel ilkeleri temel almış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 hizmet çalışanı silindiğinde veya kullanıcı kaynak için tüm site verilerini sildiğinde otomatik olarak silindiğ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. Bildirimler, site ayarları bölümünden 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, planlanmış bildirimlerin badge, icon ve image özelliklerinin referans verdiği resim kaynakları da dahil olmak üzere önceden gerekli tüm verilere ihtiyaç duyduğu anlamına gelir. Bu, planlanmış bir bildirimin gösterilmesinin geliştirici tarafından gözlemlenemediği ve kullanıcı bildirimle etkileşime geçene kadar hizmet çalışanının uyandırılmadığı anlamına gelir. Sonuç olarak, geliştiricinin IP adresi coğrafi konum araması gibi gizliliği ihlal edebilecek yaklaşımlar aracılığıyla kullanıcı hakkında bilgi edinebileceği bilinen bir yöntem şu anda mevcut değildir. Bu tasarım, özelliğin isteğe bağlı olarak işletim sistemi tarafından sağlanan planlama mekanizmalarına (ör. Android'in AlarmManager) erişmesine de olanak tanır. Bu sayede pil tasarrufu sağlanır.

Geri bildirim

Chrome Ekibi, bildirim tetikleyicilerle ilgili deneyimlerinizi öğrenmek istiyor.

API tasarımı hakkında bilgi verin

API'de beklediğiniz gibi çalışmayan bir şey mi var? Yoksa fikrinizi uygulamak için ihtiyaç duyduğunuz yöntemler veya özellikler eksik mi? Güvenlik modeliyle ilgili sorunuz veya yorumunuz mu var? Bildirim Tetikleyicileri GitHub deposunda özellik sorunu gönderin veya mevcut bir soruna düşüncelerinizi ekleyin.

Uygulamayla ilgili sorun mu yaşıyorsunuz?

Chrome'un uygulanmasıyla ilgili bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı? new.crbug.com adresinden hata kaydı oluşturun. Mümkün olduğunca fazla ayrıntı ekleyin, hatayı yeniden oluşturmayla ilgili basit talimatlar verin ve Bileşenler'i UI>Notifications olarak ayarlayın. Glitch, hataları hızlı ve kolay bir şekilde yeniden oluşturarak paylaşmak için mükemmel bir araçtır.

API'yi kullanmayı planlıyor musunuz?

Sitenizde bildirim tetikleyicileri kullanmayı planlıyor musunuz? 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 ederiz

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