Mengapa push tidak berfungsi saat browser ditutup?
Pertanyaan ini cukup sering muncul, terutama karena ada beberapa skenario yang membuatnya sulit untuk dipahami dan dinalar.
Mari kita mulai dengan Android. Android OS dirancang untuk memproses pesan push dan setelah menerimanya, mengaktifkan aplikasi Android yang sesuai untuk menangani pesan push, terlepas dari apakah aplikasi ditutup atau tidak.
Hal ini sama persis dengan browser apa pun di Android, browser akan diaktifkan saat pesan push diterima, lalu browser akan mengaktifkan service worker Anda dan mengirimkan peristiwa push.
Di OS desktop, hal ini lebih bernuansa dan paling mudah dijelaskan di Mac OS X karena ada indikator visual untuk membantu menjelaskan berbagai skenario.
Di Mac OS X, Anda dapat mengetahui apakah program sedang berjalan atau tidak dengan tanda di bawah ikon aplikasi di dock.
Jika Anda membandingkan dua ikon Chrome di dock berikut, ikon di sebelah kiri sedang berjalan, seperti yang diilustrasikan oleh tanda di bawah ikon, sedangkan Chrome di sebelah kanan tidak berjalan, sehingga tidak ada tanda di bawahnya.
Dalam konteks menerima pesan push di desktop, Anda akan menerima pesan saat browser berjalan, yaitu memiliki tanda di bawah ikon.
Artinya, browser tidak perlu membuka jendela, dan Anda akan tetap menerima pesan push di service worker, karena browser berjalan di latar belakang.
Satu-satunya waktu push tidak akan diterima adalah saat browser ditutup sepenuhnya, yaitu tidak berjalan sama sekali (tidak ada penandaan). Hal yang sama berlaku untuk Windows, meskipun sedikit lebih sulit untuk menentukan apakah Chrome berjalan di latar belakang atau tidak.
Bagaimana cara membuat aplikasi web layar utama saya terbuka dalam layar penuh dari push?
Di Chrome untuk Android, aplikasi web dapat ditambahkan ke layar utama dan saat aplikasi web dibuka dari layar utama, aplikasi web dapat diluncurkan dalam mode layar penuh tanpa kolom URL, seperti yang ditunjukkan di bawah.
Agar pengalaman ini tetap konsisten, developer ingin notifikasi yang diklik juga membuka aplikasi web mereka dalam layar penuh.
Chrome "seperti" menerapkan hal ini, meskipun Anda mungkin menganggapnya tidak dapat diandalkan dan sulit dipahami. Detail penerapan yang relevan adalah:
Artinya, kecuali jika pengguna Anda cukup sering mengunjungi situs Anda melalui ikon layar utama, notifikasi Anda akan terbuka di UI browser normal.
Masalah ini akan ditindaklanjuti lebih lanjut.
Mengapa ini lebih baik daripada web socket?
Service worker dapat diaktifkan saat jendela browser ditutup. Soket web hanya akan aktif selama browser dan halaman web tetap terbuka.
Apa hubungan antara GCM, FCM, Web Push, dan Chrome?
Pertanyaan ini memiliki sejumlah aspek dan cara termudah untuk menjelaskannya adalah dengan menelusuri histori push web dan Chrome. (Jangan khawatir, video ini singkat.)
Desember 2014
Saat pertama kali menerapkan push web, Chrome menggunakan Google Cloud Messaging (GCM) untuk mendukung pengiriman pesan push dari server ke browser.
Ini bukan push web. Ada beberapa alasan mengapa penyiapan awal Chrome dan GCM ini bukan push web "yang sebenarnya".
- GCM mengharuskan developer menyiapkan akun di Konsol Google Developers.
- Chrome dan GCM memerlukan ID pengirim khusus untuk dibagikan oleh aplikasi web agar dapat menyiapkan pesan dengan benar.
- Server GCM menerima permintaan API kustom yang bukan standar web.
Juli 2016
Pada bulan Juli, fitur baru di web push diluncurkan - Kunci Server Aplikasi (atau VAPID, sebagaimana spesifikasinya dikenal). Saat Chrome menambahkan dukungan untuk API baru ini, Chrome menggunakan Firebase Cloud Messaging (juga dikenal sebagai FCM), bukan GCM, sebagai layanan pesan. Hal ini penting karena beberapa alasan:
- Chrome dan Kunci Server Aplikasi tidak memerlukan jenis project apa pun untuk disiapkan dengan Google atau Firebase. Layanan yang tersedia langsung bisa Anda pakai.
- FCM mendukung protokol push web, yang merupakan API yang akan didukung oleh semua layanan push web. Artinya, apa pun layanan push yang digunakan browser, Anda cukup membuat jenis permintaan yang sama dan layanan tersebut akan mengirimkan pesan.
Mengapa hal ini membingungkan sekarang?
Ada banyak kebingungan sekarang karena konten telah ditulis tentang topik push web, yang sebagian besar merujuk ke GCM atau FCM. Jika konten merujuk ke GCM, Anda mungkin harus menganggapnya sebagai tanda bahwa konten tersebut sudah lama ATAU terlalu berfokus pada Chrome. (Saya bersalah karena melakukan hal ini di sejumlah postingan lama.)
Sebagai gantinya, anggap web push terdiri dari browser, yang menggunakan layanan push untuk mengelola pengiriman dan penerimaan pesan, tempat layanan push akan menerima permintaan "protokol web push". Jika Anda berpikir dalam istilah ini, Anda dapat mengabaikan browser dan layanan push yang digunakan dan mulai bekerja.
Panduan ini ditulis untuk berfokus pada pendekatan standar push web dan dengan sengaja mengabaikan hal lainnya.
Firebase memiliki JavaScript SDK. Apa dan mengapa?
Bagi Anda yang telah menemukan Firebase Web SDK dan menyadari bahwa SDK tersebut memiliki API pesan untuk JavaScript, Anda mungkin bertanya-tanya apa perbedaannya dengan push web.
SDK pesan (dikenal sebagai Firebase Cloud Messaging JS SDK) melakukan beberapa trik di balik layar untuk mempermudah penerapan push web.
- Daripada mengkhawatirkan
PushSubscriptiondan berbagai kolomnya, Anda hanya perlu mengkhawatirkan Token FCM (string). - Dengan menggunakan token untuk setiap pengguna, Anda dapat menggunakan FCM API eksklusif untuk memicu pesan push. API ini tidak memerlukan enkripsi payload. Anda dapat mengirim payload teks biasa dalam isi permintaan POST.
- API eksklusif FCM mendukung fitur kustom, misalnya Topik FCM (API ini juga berfungsi di web, meskipun dokumentasinya kurang lengkap).
- Terakhir, FCM mendukung Android, iOS, dan web, sehingga bagi beberapa tim, FCM lebih mudah digunakan dalam project yang sudah ada.
Tindakan ini menggunakan push web di balik layar, tetapi tujuannya adalah untuk mengabstraksikannya.
Seperti yang saya katakan di pertanyaan sebelumnya, jika Anda menganggap push web hanya sebagai browser dan layanan push, Anda dapat menganggap Messaging SDK di Firebase sebagai library untuk menyederhanakan penerapan push web.
Langkah berikutnya
- Ringkasan Notifikasi Push Web
- Cara Kerja Push
- Mendaftarkan Pengguna
- UX Izin
- Mengirim Pesan dengan Library Web Push
- Protokol Push Web
- Menangani Peristiwa Push
- Menampilkan Notifikasi
- Perilaku Notifikasi
- Pola Notifikasi Umum
- FAQ Notifikasi Push
- Masalah Umum dan Melaporkan Bug