Bagaimana cara kerja pemberitahuan push?

25

Saya bertanya-tanya bagaimana cara kerja sistem pemberitahuan push?

Apakah ada koneksi TCP / IP aktif yang berjalan di latar belakang ke server Google?

opc0de
sumber
1
Lihat Wikipedia - yang memang agak sulit dibaca. Pada dasarnya, dan letakkan kata-kata yang mudah: Klien terhubung ke server dan meminta diberi informasi - dan jawabannya kemudian "tertunda" ketika informasi tersedia (atau tidak pernah ada jika ada), yang kemudian diikuti oleh permintaan baru. Jadi ya, ini membutuhkan latar belakang permanen koneksi TCP / IP yang menggigit baterai Anda.
Izzy
@Izzy itu tidak mungkin benar, karena (1) dokumen mengatakan Intent dibuat saat pesan tiba, dan (2) apa yang berjalan pada Android dapat membuat koneksi tetap terbuka yang Android tidak pernah bisa membunuh?
Michael
@Michael Dokumen mana? Saya bukan pemrogram Android yang memahami kedalamannya (dan ini bukan papan diskusi), jadi saya mungkin tidak dapat berdebat dengan Anda di sini. Saya pernah mendengar bahwa pendengar (untuk siaran) dapat dibuat secara dinamis - tetapi saya belum pernah mendengar tentang maksud (IMHO, mereka harus dideklarasikan dalam Manifest). Saya bisa membayangkan beberapa layanan Google melakukan "pekerjaan nyata", dan aplikasi hanya mendaftarkan "penerima". Deskripsi di atas lebih "umum", tidak spesifik untuk Android, dan saya mencoba membuatnya tetap sederhana;)
Izzy

Jawaban:

25

Ya, Android menyimpan satu koneksi aktif ke server Google, tetapi tidak menggunakan banyak daya atau data, karena tidak ada lalu lintas yang dikirim sampai ada sesuatu yang mengirim pesan GCM ke aplikasi di ponsel Anda. Hanya ada satu koneksi di ponsel, yang digunakan oleh semua aplikasi: menginstal aplikasi baru yang menggunakan GCM tidak menambah beban tambahan.

Langkah pertama dalam GCM adalah bahwa server pihak ketiga (seperti server email) mengirimkan permintaan ke server GCM Google. Server ini kemudian mengirimkan pesan ke perangkat Anda, melalui koneksi terbuka itu. Sistem Android melihat pesan untuk menentukan aplikasi untuk mana, dan memulai aplikasi itu. Aplikasi harus sudah terdaftar di Android untuk menggunakan GCM, dan harus memiliki izin yang relevan. Saat aplikasi dimulai, itu mungkin membuat pemberitahuan langsung dengan data dari pesan. Ukuran pesan GCM sangat terbatas, sehingga aplikasi mungkin membuka koneksi normal ke server pihak ketiga untuk mendapatkan informasi lebih lanjut (misalnya, mengunduh tajuk email baru).

Keuntungan menggunakan pemberitahuan push adalah aplikasi tidak harus berjalan secara berkala untuk memeriksa data baru, menghemat daya dan data. Keuntungan memiliki mekanisme terpusat seperti GCM adalah bahwa perangkat hanya membutuhkan satu koneksi jaringan terbuka dan sistem Android GCM adalah satu-satunya hal yang perlu tetap berjalan, daripada setiap aplikasi harus tetap berjalan di latar belakang untuk menjaga jaringannya sendiri koneksi ke server sendiri.

Dan Hulme
sumber
Saya hanya akan menambahkan 1 komentar: pesan GCM dapat berukuran 4KByte, sehingga tidak terbatas. developer.android.com/google/gcm/gcm.html
Moszi
Apa yang membuat koneksi ini terbuka? Aktivitas atau layanan Android apa pun dapat dibunuh kapan saja.
Michael
1
Terimakasih atas infonya. Menurut pertanyaan saya , Apakah Anda tahu apa URL soket yang dibuka? (URL koneksi dari perangkat ke server GCM yang dibuka dan digunakan untuk data notifikasi)
Sabeti
6

OS Android sekarang menggunakan GCM (Google Cloud Messaging) untuk Push Notification WS. Anda bisa mendapatkan ide yang lebih baik di sini ; itu akan memberi Anda Tinjauan Arsitektur tentang Layanan Pemberitahuan Dorong Penuh dengan Siklus Hidupnya.

Semoga ini bisa membantu.

Bhavesh
sumber
Apakah ada cara untuk melakukan hal serupa tanpa harus bergantung pada server Google?
Michael
@Michael Menggunakan layanan Amazon Cloud? Mereka tampaknya memiliki konsep yang sebanding. Tetapi untuk "bagaimana caranya", ini adalah tempat yang salah;)
Izzy
1

Terlambat membalas pertanyaan lama tetapi layak untuk diajukan.

GCM sudah tidak digunakan lagi pada April 2018 lalu dan google merekomendasikan untuk menggunakan FCM yang mirip dengan GCM.

  1. kami tidak perlu menulis pendaftaran kami sendiri atau logika coba lagi berlangganan
  2. Anda dapat menggunakan Firebase Notifications, solusi pemberitahuan tanpa server dengan konsol web yang memungkinkan siapa saja mengirim pemberitahuan ke target audiens spesifik berdasarkan wawasan Firebase Analytics.
  3. Itu memang memiliki infrastruktur inti GCM.
  4. Satu pesan dapat mentransfer muatan hingga 4KB ke aplikasi klien.
Ajay Deepak
sumber
1
Dari perspektif aplikasi, FCM tidak mirip dengan GCM, identik. FCM hanyalah nama baru GCM.
Robert