Mengapa push tidak berfungsi saat browser ditutup?
Pertanyaan ini sering kali muncul, terutama karena ada beberapa skenario yang membuatnya sulit untuk dipahami dan dipahami.
Mari kita mulai dengan Android. OS Android dirancang untuk memproses pesan push dan setelah menerimanya, mengaktifkan aplikasi Android yang sesuai untuk menangani pesan push tersebut, terlepas dari apakah aplikasi ditutup atau tidak.
Ini sama persis dengan browser apa pun di Android, browser akan diaktifkan saat pesan push diterima, lalu browser akan mengaktifkan pekerja layanan dan mengirim peristiwa push.
Di OS desktop, tampilan 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 berjalan atau tidak dengan memberi tanda di bawah ikon aplikasi pada dok.
Jika Anda membandingkan dua ikon Chrome di dok berikut, ikon di sebelah kiri yang berjalan, seperti yang ditunjukkan oleh tanda di bawah ikon, sedangkan Chrome di sebelah kanan tidak berjalan, sehingga tidak adanya tanda di bawahnya.
![Contoh OS X](https://web.dev/static/articles/push-notifications-faq/image/example-os-x-72bc3d5fa52ff.png?authuser=6&hl=id)
Dalam konteks menerima pesan push di desktop, Anda akan menerima pesan saat browser sedang berjalan, yaitu memiliki tanda di bawah ikon.
Ini berarti browser tidak boleh memiliki jendela yang terbuka, dan Anda akan tetap menerima pesan push di pekerja layanan karena browser berjalan di latar belakang.
Satu-satunya waktu push tidak akan diterima adalah saat browser tertutup sepenuhnya, yaitu tidak berjalan sama sekali (tanpa tanda). 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 terbuka dengan layar penuh dari push?
Di Chrome untuk Android, aplikasi web dapat ditambahkan ke layar utama dan saat aplikasi web dibuka dari layar utama, aplikasi dapat diluncurkan dalam mode layar penuh tanpa kolom URL, seperti yang ditampilkan di bawah ini.
![Ikon Layar Utama menjadi Layar Penuh](https://web.dev/static/articles/push-notifications-faq/image/home-screen-icon-fullscr-e034b276ccc7e.png?authuser=6&hl=id)
Untuk menjaga pengalaman ini tetap konsisten, developer ingin notifikasi yang mereka klik juga membuka aplikasi web dalam layar penuh.
Chrome "semacam" menerapkan hal ini, meskipun Anda mungkin merasa tidak dapat diandalkan dan sulit untuk alasannya. Detail penerapan yang relevan adalah:
Artinya, kecuali pengguna mengunjungi situs Anda melalui ikon layar utama secara teratur, notifikasi akan terbuka di UI browser biasa.
Masalah ini akan diperbaiki lebih lanjut.
Mengapa ini lebih baik daripada soket web?
Pekerja layanan dapat diaktifkan saat jendela browser ditutup. Soket web hanya akan aktif selama browser dan laman web tetap terbuka.
Apa maksudnya dengan GCM, FCM, Web Push, dan Chrome?
Pertanyaan ini memiliki sejumlah faset dan cara termudah untuk menjelaskannya adalah dengan menelusuri histori push web dan Chrome. (Jangan khawatir, ini singkat.)
Desember 2014
Saat Chrome pertama kali menerapkan web push, Chrome menggunakan Google Cloud Messaging (GCM) untuk mendukung pengiriman pesan push dari server ke browser.
Ini bukan push web. Ada beberapa alasan karena konfigurasi awal Chrome dan GCM ini bukan web push "sebenarnya".
- GCM mengharuskan pengembang untuk menyiapkan akun di Google Developers Console.
- Chrome dan GCM memerlukan ID pengirim khusus untuk dibagikan oleh aplikasi web agar dapat menyiapkan pesan dengan benar.
- Server GCM menerima permintaan API khusus yang bukan standar web.
Juli 2016
Pada bulan Juli, fitur baru di web push diluncurkan, yaitu Kunci Server Aplikasi (atau VAPID, sesuai spesifikasinya). Ketika 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 project apa pun untuk disiapkan dengan Google atau Firebase. Itu akan berfungsi.
- FCM mendukung protokol web push, 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 pesan akan dikirim.
Mengapa hari ini membingungkan?
Ada banyak kebingungan sekarang karena konten telah ditulis tentang topik web push, yang sebagian besar merujuk pada GCM atau FCM. Jika konten merujuk pada GCM, Anda mungkin harus menganggapnya sebagai tanda bahwa itu adalah konten lama ATAU terlalu fokus pada Chrome. (Saya melakukan hal ini di beberapa postingan lama.)
Sebagai gantinya, anggaplah web push terdiri dari browser yang menggunakan layanan push untuk mengelola pengiriman dan penerimaan pesan, di mana layanan push akan menerima permintaan "web push protocol". Jika memikirkan istilah ini, Anda dapat mengabaikan browser dan layanan push mana yang digunakannya dan mulai berfungsi.
Panduan ini ditulis untuk berfokus pada pendekatan standar push web dan dengan sengaja mengabaikan hal lain.
Firebase memiliki JavaScript SDK. Apa dan Mengapa?
Bagi Anda yang telah menemukan Firebase web SDK dan menyadarinya memiliki API pesan untuk JavaScript, Anda mungkin ingin tahu apa perbedaannya dengan web push.
SDK pesan (dikenal sebagai Firebase Cloud Messaging JS SDK) melakukan beberapa trik di balik layar untuk mempermudah implementasi web push.
- Daripada mengkhawatirkan
PushSubscription
dan 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 Topics FCM (API ini juga berfungsi di web, meskipun didokumentasikan dengan buruk).
- Terakhir, FCM mendukung Android, iOS, dan web. Jadi, bekerja dengan project yang sudah ada akan lebih mudah bagi beberapa tim.
Ini menggunakan web push di balik layar, tetapi tujuannya adalah untuk memisahkannya.
Seperti yang saya katakan di pertanyaan sebelumnya, jika Anda menganggap web push hanya sebagai browser dan layanan push, Anda bisa mempertimbangkan Messaging SDK di Firebase sebagai library untuk menyederhanakan implementasi web push.
Langkah berikutnya
- Ringkasan Notifikasi Push Web
- Cara Kerja Push
- Membuat Langganan 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