API Pemicu Notifikasi

Dengan Pemicu Notifikasi, Anda dapat menjadwalkan notifikasi lokal yang tidak memerlukan koneksi jaringan, sehingga ideal untuk kasus penggunaan seperti aplikasi kalender.

Apa yang dimaksud dengan Pemicu Notifikasi?

Developer web dapat menampilkan notifikasi menggunakan Web Notifications API. Fitur ini sering digunakan dengan Push API untuk memberi tahu pengguna tentang informasi mendesak, seperti peristiwa berita terbaru atau pesan yang diterima. Notifikasi ditampilkan dengan menjalankan JavaScript di perangkat pengguna.

Masalah terkait Push API adalah tidak dapat diandalkan untuk memicu notifikasi yang harus ditampilkan saat kondisi tertentu terpenuhi, seperti waktu atau lokasi. Contoh kondisi berbasis waktu adalah notifikasi kalender yang mengingatkan Anda akan rapat penting dengan atasan Anda pada pukul 14.00. Contoh kondisi berbasis lokasi adalah notifikasi yang mengingatkan Anda untuk membeli susu saat Anda memasuki sekitar toko bahan makanan. Konektivitas jaringan atau fitur yang menghemat baterai seperti mode istirahatkan dapat menunda pengiriman notifikasi berbasis push.

Pemicu notifikasi mengatasi masalah ini dengan memungkinkan Anda menjadwalkan notifikasi dengan kondisi pemicunya terlebih dahulu, sehingga sistem operasi akan mengirimkan notifikasi pada waktu yang tepat meskipun tidak ada konektivitas jaringan atau perangkat dalam mode penghemat baterai.

Kasus penggunaan

Aplikasi kalender dapat menggunakan pemicu notifikasi berbasis waktu untuk mengingatkan pengguna tentang rapat yang akan datang. Skema notifikasi default untuk aplikasi kalender dapat berupa menampilkan notifikasi pendahuluan pertama satu jam sebelum rapat, lalu notifikasi lain yang lebih mendesak lima menit sebelumnya.

Jaringan TV dapat mengingatkan pengguna bahwa acara TV favorit mereka akan segera dimulai atau live stream konferensi akan dimulai.

Situs konversi zona waktu dapat menggunakan pemicu notifikasi berbasis waktu agar pengguna dapat menjadwalkan alarm untuk konferensi telepon atau panggilan video.

Status saat ini

Langkah Status
1. Buat penjelasan Selesai
2. Membuat draf awal spesifikasi Not started
3. Kumpulkan masukan dan lakukan iterasi desain. Dalam proses
4. Uji coba origin Selesai
5. Luncurkan Not started

Cara menggunakan pemicu notifikasi

Mengaktifkan melalui about://flags

Untuk bereksperimen dengan Notification Triggers API secara lokal, tanpa token uji coba origin, aktifkan flag #enable-experimental-web-platform-features di about://flags.

Deteksi fitur

Anda dapat mengetahui apakah browser mendukung Pemicu Notifikasi dengan memeriksa keberadaan properti showTrigger:

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

Menjadwalkan notifikasi

Menjadwalkan notifikasi mirip dengan menampilkan notifikasi push biasa, kecuali Anda harus meneruskan properti kondisi showTrigger dengan objek TimestampTrigger sebagai nilai ke objek options notifikasi.

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),
  });
};

Membatalkan notifikasi terjadwal

Untuk membatalkan notifikasi terjadwal, pertama-tama minta daftar semua notifikasi yang cocok dengan tag tertentu melalui ServiceWorkerRegistration.getNotifications(). Perhatikan bahwa Anda harus meneruskan flag includeTriggered agar notifikasi terjadwal disertakan dalam daftar:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

Proses debug

Anda dapat menggunakan panel Notifikasi Chrome DevTools untuk men-debug notifikasi. Untuk memulai proses debug, tekan Start recording event Mulai merekam peristiwa atau Control+E (Command+E di Mac). Chrome DevTools mencatat semua peristiwa notifikasi, termasuk notifikasi yang dijadwalkan, ditampilkan, dan notifikasi ditutup selama tiga hari, meskipun DevTools ditutup.

Peristiwa notifikasi terjadwal dicatat ke panel Notifications di Chrome DevTools, yang terletak di panel Application.
Notifikasi terjadwal.
Peristiwa notifikasi yang ditampilkan dicatat ke panel Notifications di Chrome DevTools.
Notifikasi yang ditampilkan.

Demo

Anda dapat melihat cara kerja Pemicu Notifikasi di demo, yang memungkinkan Anda menjadwalkan notifikasi, membuat daftar notifikasi terjadwal, dan membatalkannya. Kode sumber tersedia di Glitch.

Screenshot aplikasi web demo Pemicu Notifikasi.
Pemicu Notifikasi demo.

Keamanan dan izin

Tim Chrome telah merancang dan menerapkan Notification Triggers API menggunakan prinsip inti yang ditetapkan dalam Mengontrol Akses ke Fitur Platform Web yang Canggih, termasuk kontrol pengguna, transparansi, dan ergonomi. Karena memerlukan pekerja layanan, API ini juga memerlukan konteks yang aman. Penggunaan API memerlukan izin yang sama seperti notifikasi push biasa.

Kontrol pengguna

API ini hanya tersedia dalam konteks ServiceWorkerRegistration. Ini menyiratkan bahwa semua data yang diperlukan disimpan dalam konteks yang sama dan otomatis dihapus saat pekerja layanan dihapus atau pengguna menghapus semua data situs untuk originnya. Memblokir cookie juga akan mencegah pekerja layanan diinstal di Chrome, sehingga API ini tidak dapat digunakan. Notifikasi dapat selalu dinonaktifkan oleh pengguna untuk situs di setelan situs.

Transparansi

Tidak seperti Push API, API ini tidak bergantung pada jaringan, yang menyiratkan bahwa notifikasi terjadwal memerlukan semua data yang diperlukan terlebih dahulu, termasuk resource gambar yang direferensikan oleh atribut badge, icon, dan image. Artinya, menampilkan notifikasi terjadwal tidak dapat diamati oleh developer dan tidak mengaktifkan pekerja layanan hingga pengguna berinteraksi dengan notifikasi tersebut. Akibatnya, saat ini tidak ada cara yang diketahui developer untuk mendapatkan informasi tentang pengguna melalui pendekatan yang berpotensi melanggar privasi seperti pencarian geolokasi alamat IP. Desain ini juga memungkinkan fitur tersebut secara opsional memanfaatkan mekanisme penjadwalan yang disediakan oleh sistem operasi seperti AlarmManager Android, yang membantu menghemat baterai.

Masukan

Tim Chrome ingin mengetahui pengalaman Anda menggunakan Pemicu Notifikasi.

Ceritakan kepada kami tentang desain API

Apakah ada sesuatu pada API yang tidak berfungsi seperti yang Anda harapkan? Atau apakah ada metode atau properti yang hilang yang diperlukan untuk menerapkan ide Anda? Punya pertanyaan atau komentar tentang model keamanan? Laporkan masalah spesifikasi di repo GitHub Pemicu Notifikasi, atau tambahkan pendapat Anda ke masalah yang sudah ada.

Mengalami masalah dengan penerapan?

Apakah Anda menemukan bug pada implementasi Chrome? Atau apakah implementasinya berbeda dengan spesifikasi? Laporkan bug di new.crbug.com. Pastikan untuk menyertakan detail sebanyak mungkin, petunjuk sederhana untuk mereproduksi, dan setel Komponen ke UI>Notifications. Glitch sangat berguna untuk berbagi reproduksi bug yang cepat dan mudah.

Berencana menggunakan API?

Berencana menggunakan Pemicu Notifikasi di situs Anda? Dukungan publik Anda membantu kami memprioritaskan fitur dan menunjukkan kepada vendor browser lain betapa pentingnya dukungan tersebut. Kirim tweet ke @ChromiumDev menggunakan hashtag #NotificationTriggers dan beri tahu kami di mana dan bagaimana Anda menggunakannya.

Link Bermanfaat

Ucapan terima kasih

Pemicu Notifikasi diterapkan oleh Richard Knoll dan penjelasan yang ditulis oleh Peter Beverloo, dengan kontribusi dari Richard. Orang-orang berikut telah meninjau artikel: Joe Medley, Pete LePage, serta Richard dan Peter. Hero image oleh Lukas Blazek di Unsplash.