FAQ terkait notifikasi push

Mengapa push tidak berfungsi saat browser ditutup?

Pertanyaan ini sering muncul, terutama karena ada beberapa skenario yang membuat sulit untuk memahami dan bernalar.

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 pekerja layanan dan mengirim peristiwa push.

Pada 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 berjalan atau tidak dengan tanda di bawah ikon aplikasi di dok.

Jika Anda membandingkan dua ikon Chrome di dok 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.

Contoh OS X

Dalam konteks menerima pesan push di desktop, Anda akan menerima pesan saat browser berjalan, yaitu memiliki tanda di bawah ikon.

Artinya, browser tidak dapat membuka jendela, dan Anda masih akan menerima pesan push di pekerja layanan, 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 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 saya terbuka dalam layar penuh dari push?

Di Chrome untuk Android, aplikasi web dapat ditambahkan ke layar utama dan saat dibuka dari layar utama, aplikasi web dapat diluncurkan dalam mode layar penuh tanpa kolom URL, seperti yang ditunjukkan di bawah.

Ikon Layar utama ke Layar Penuh

Agar pengalaman ini tetap konsisten, developer ingin notifikasi yang diklik juga membuka aplikasi web mereka dalam layar penuh.

Chrome "semacam" menerapkan hal ini, meskipun Anda mungkin merasa tidak dapat diandalkan dan sulit untuk dipertimbangkan. Detail penerapan yang relevan adalah:

Artinya, kecuali jika pengguna mengunjungi situs Anda melalui ikon layar utama secara cukup rutin, notifikasi Anda akan terbuka di UI browser normal.

Masalah ini akan ditangani 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 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 melihat histori push web dan Chrome. (Jangan khawatir, videonya 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 penyiapan awal Chrome dan GCM ini bukan push web "sebenarnya".

  • GCM mengharuskan developer menyiapkan akun di Konsol Google Developers.
  • Chrome dan GCM memerlukan ID pengirim khusus yang 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, seperti spesifikasi yang diketahui). Saat menambahkan dukungan untuk API baru ini, Chrome menggunakan Firebase Cloud Messaging (juga dikenal sebagai FCM) sebagai layanan pesan, bukan GCM. Hal ini penting karena beberapa alasan:

  • Kunci Server Aplikasi dan Chrome tidak memerlukan jenis project apa pun untuk disiapkan dengan Google atau Firebase. Aplikasi ini akan berfungsi dengan baik.
  • FCM mendukung protokol push web, yang merupakan API yang akan didukung oleh semua layanan push web. Artinya, terlepas dari layanan push yang digunakan browser, Anda hanya perlu membuat jenis permintaan yang sama dan browser akan mengirim pesan.

Mengapa hal ini membingungkan saat ini?

Sekarang ada banyak kebingungan karena konten telah ditulis tentang topik push web, yang sebagian besar mereferensikan GCM atau FCM. Jika konten mereferensikan GCM, sebaiknya Anda memperlakukannya sebagai tanda bahwa konten tersebut adalah konten lama ATAU terlalu berfokus pada Chrome. (Saya bersalah karena melakukan hal ini di sejumlah postingan lama.)

Sebagai gantinya, anggap push web terdiri dari browser, yang menggunakan layanan push untuk mengelola pengiriman dan penerimaan pesan, dengan layanan push akan menerima permintaan "protokol push web". Jika Anda berpikir dalam hal ini, Anda dapat mengabaikan browser dan layanan push yang digunakannya dan mulai bekerja.

Panduan ini telah ditulis untuk berfokus pada pendekatan standar push web dan sengaja mengabaikan hal lain.

Firebase memiliki JavaScript SDK. Apa dan Mengapa?

Bagi Anda yang telah menemukan Firebase web SDK dan melihat 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 khawatir dengan PushSubscription dan berbagai kolomnya, Anda hanya perlu khawatir dengan Token FCM (string).
  • Dengan menggunakan token untuk setiap pengguna, Anda dapat menggunakan FCM API eksklusif untuk memicu pesan push. API ini tidak memerlukan payload terenkripsi. Anda dapat mengirim payload teks biasa dalam isi permintaan POST.
  • API eksklusif FCM mendukung fitur kustom, misalnya Topik FCM (Fitur ini juga berfungsi di web, meskipun dokumentasinya kurang baik).
  • Terakhir, FCM mendukung Android, iOS, dan web, sehingga untuk beberapa tim, FCM lebih mudah digunakan dalam project yang ada.

Hal ini menggunakan push web 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 dapat menganggap Messaging SDK di Firebase sebagai library untuk menyederhanakan penerapan web push.

Langkah berikutnya

Codelab