Baru-baru ini saya belajar tentang kemampuan aplikasi iPhone untuk menerima pemberitahuan hampir seketika ke aplikasi pemberitahuan ke aplikasi .
Ini disediakan dalam bentuk pemberitahuan push, sebuah protokol yang dipesan lebih dahulu yang menjaga selalu koneksi data ke iPhone dan paket pesan biner ke aplikasi, yang muncul peringatan sangat cepat, antara 0,5 - 5 detik dari aplikasi server kirim ke aplikasi telepon waktu merespon. Ini dikirim sebagai data - bukan SMS - dalam paket yang sangat kecil yang dibebankan sebagai bagian dari paket data bukan sebagai pesan masuk.
Saya ingin tahu apakah, menggunakan Android, ada fasilitas serupa, atau apakah mungkin menerapkan sesuatu yang dekat dengan ini menggunakan API Android. Untuk memperjelas, saya mendefinisikan serupa dengan:
- Bukan pesan SMS, tetapi beberapa solusi berbasis data
- Waktu yang sesingkat mungkin
- Dapat diukur, misalnya, sebagai bagian server dari aplikasi seluler, saya dapat memberi tahu ribuan instance aplikasi dalam hitungan detik
Saya menghargai aplikasi bisa berbasis tarik, gaya permintaan / respons HTTP, tapi idealnya saya tidak ingin terlalu banyak polling hanya untuk memeriksa notifikasi; selain itu seperti mengeringkan rencana data.
sumber
Jawaban:
Firebase Cloud Messaging FCM FAQ adalah versi baru GCM. Ini mewarisi infrastruktur inti GCM untuk mengirimkan pesan andal di Android, iOS dan Chrome. Namun mereka akan terus mendukung GCM karena banyak pengembang menggunakan GCM SDK hari ini untuk menangani notifikasi, dan peningkatan aplikasi klien membutuhkan waktu.
Pada tanggal 26 Juni 2012, Google Cloud Messaging adalah cara yang disukai untuk mengirim pesan ke aplikasi yang berjalan di perangkat.
Sebelumnya (dan sekarang sudah tidak digunakan lagi), layanan itu disebut Cloud to Device Messaging .
sumber
XMPP adalah solusi yang bagus. Saya telah menggunakannya untuk aplikasi Android yang diaktifkan dan diaktifkan secara waktu nyata. XMPP kuat, sangat extensible dan mudah diintegrasikan dan digunakan.
Ada banyak server XMPP gratis (meskipun karena kesopanan Anda tidak boleh menyalahgunakannya) dan ada server open source yang dapat Anda jalankan di salah satu kotak Anda sendiri. OpenFire adalah pilihan yang sangat baik.
Perpustakaan yang Anda inginkan bukan Smack seperti disebutkan di atas, itu adalahSack . Tetapi perhatikan, ini adalah lingkungan build - Anda harus membangun perpustakaan.
Ini adalah perhitungan yang saya lakukan pada dampak masa pakai baterai dari solusi XMPP:
sumber
Saya baru-baru ini mulai bermain dengan MQTT http://mqtt.org untuk Android sebagai cara untuk melakukan apa yang Anda minta (yaitu bukan SMS tetapi data didorong, pengiriman pesan yang hampir segera, terukur, tidak polling, dll.)
Saya memiliki posting blog dengan informasi latar belakang tentang hal ini jika bermanfaat http://dalelane.co.uk/blog/?p=938
(Catatan: MQTT adalah teknologi IBM, dan saya harus menunjukkan bahwa saya bekerja untuk IBM.)
sumber
Lihatlah platform Xtify . Sepertinya ini yang mereka lakukan,
sumber
Google mendepresiasi C2DM, tetapi sebagai gantinya mereka memperkenalkan GCM (Google Cloud Messaging) saya tidak berpikir kuota mereka gratis dan gratis! Itu memang membutuhkan Android 2.2+! http://developer.android.com/guide/google/gcm/index.html
sumber
Jika Anda dapat bergantung pada pustaka Google yang ada di sana untuk target pasar Anda, maka Anda mungkin ingin mengembalikan fungsionalitas GTalk (mendaftarkan sumber daya pada nama pengguna yang ada - memotongnya saat menerima pesan dengan BroadcastReceiver).
Jika tidak, dan saya berharap Anda tidak bisa , maka Anda akan menggabungkan versi XMPP Anda sendiri . Ini menyakitkan, tetapi dapat dibuat lebih mudah jika XMPP dibundel secara terpisah sebagai perpustakaan mandiri.
Anda juga dapat mempertimbangkan PubSubHubub , tetapi saya tidak tahu penggunaan jaringannya. Saya percaya itu dibangun di atas XMPP.
sumber
Saya telah melihat ini dan PubSubHubBub direkomendasikan oleh jamesh bukan merupakan pilihan. PubSubHubBub dimaksudkan untuk komunikasi server ke server
Saya sampai pada kesimpulan bahwa metode paling sederhana adalah dengan menggunakan push Comet HTTP. Ini adalah solusi yang sederhana dan dipahami dengan baik tetapi juga dapat digunakan kembali untuk aplikasi web.
sumber
Ada upaya open-source baru untuk mengembangkan perpustakaan Java untuk pemberitahuan push di Android, menggunakan server komet Meteor sebagai backend. Anda dapat melihatnya di Blog Proyek Diakon . Kami membutuhkan pengembang, jadi tolong sebarkan berita ini!
sumber
Google baru-baru ini (18 Mei2016) mengumumkan bahwa Firebase sekarang merupakan platform terpadu untuk pengembang seluler termasuk notifikasi push real time. Juga multi-platform:
sumber
sumber
Saya tidak dapat menemukan tempat saya membacanya, tetapi saya percaya gmail menggunakan koneksi TCP terbuka untuk melakukan push email.
sumber
Seperti
GTalk
yang hilang dari SDK, mungkin ide yang bagus untuk membuat sistem pesan push 'standar'. Dengan begitu, hanya satu layanan yang harus dijalankan, hanya satu koneksi tcp tambahan yang harus dibuka. Aplikasi harus berbicara dengan layanan ini menggunakanIntents
dan terlebih dahulu meminta izin untuk mengirim dan menerima pemberitahuan dari layanan. Layanan kemudian harus memberi tahu pengguna aplikasi yang ingin mengirim dan menerima pesan. Pengguna kemudian akan memberikan atau menolak izin, jadi dia tetap memegang kendali. Aplikasi kemudian akan mendaftarkan kategori tindakan + ke layanan, sehingga layanan tahu bagaimana mengirimkan pesan yang didorong.Apakah ide yang bagus atau tidak?
sumber
Mengapa Anda tidak pergi dengan implementasi XMPP. saat ini ada begitu banyak server publik yang tersedia termasuk gtalk, jabber, citadel dll. Untuk Android ada satu SDK yang juga tersedia bernama SMACK. Ini kami tidak bisa mengatakan pemberitahuan push tetapi menggunakan XMPP Anda dapat membuat koneksi tetap terbuka antara klien dan server yang akan memungkinkan komunikasi dua arah. Berarti klien dan server Android keduanya dapat berkomunikasi satu sama lain. Saat ini ini akan memenuhi kebutuhan Push di android. Saya telah menerapkan kode sampel dan ini sangat bagus
sumber
Saya baru-baru ini mengembangkan http://pushdroid.org sebuah aplikasi tunggal yang harus diinstal pada ponsel sama seperti google telah menerapkannya di 2.2 ini bekerja dari 1,5 dan disiarkan melalui niat.
sumber
Masalah dengan GCM adalah bahwa ada banyak konfigurasi yang terlibat dalam proses:
Jika Anda menyukai hal-hal sederhana (seperti saya), Anda harus mencoba UrbanAirship . Ini adalah (IMHO) cara termudah untuk menggunakan GCM di aplikasi Anda tanpa melakukan banyak konfigurasi. Ini juga memberi Anda GUI yang cukup untuk menguji apakah pesan GCM Anda dikirim dengan benar.
Catatan: Saya tidak berafiliasi dengan UrbanAirship dengan cara apa pun
sumber
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Ini adalah solusi yang bagus dan bekerja untuk push.
Silakan dicoba
sumber
Mereka memiliki pendengar yang harus Anda gunakan dengan menggunakan kelas perpustakaan mereka dalam kode Anda. Anda tidak perlu repot-repot mendorong. Anda harus mengirim pesan ke server server akan mendorong pesan ke perangkat. Mereka menggunakan OAuth. Mengenai Protokol, ada dua metode menggunakan CCS dan XMPP. CCS hanya menggunakan XMPP sebagai lapisan transport terautentikasi, sehingga Anda dapat menggunakan sebagian besar pustaka XMPP untuk mengelola koneksi. Untuk mengirim pemberitahuan ke perangkat, Anda dapat menulis kode di aplikasi android untuk dikirim serta kode server Anda. pengiriman pesan hanya akan dilakukan oleh kode Anda. Istirahat akan ditangani oleh Google Server dalam kasus GCM. Anda dapat memeriksa detail di tautan ini
http://developer.android.com/google/gcm/server.html
Juga, untuk masalah keamanan
keamanan perpesanan Google cloud https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
Jika aplikasi Anda tidak berjalan maka perangkat juga dapat menerima pemberitahuan karena Anda harus menulis kode untuk pendengar siaran. Di latar belakang akan mendengarkan server dan setiap kali ada paket pesan akan ada itu menerima pesan sebagai pemberitahuan. Android memiliki layanan yang Anda butuhkan untuk tidak repot tentang hal itu. Anda hanya perlu menggunakan sumber daya tersebut menggunakan kelas pustaka yang membuat pekerjaan Anda lebih mudah dan membiarkan mereka menulis jika aplikasi Anda tidak berjalan maka juga menerima pemberitahuan. Jelas, akan ada beberapa pendengar yang membuat aplikasi untuk menerima. Periksa bagian "Terima pesan" di tautan ini
http://developer.android.com/google/gcm/client.html
Ini akan menerima permintaan dari pengguna juga. Untuk GCM itu akan dilakukan. Silakan periksa "Kirim pesan"
http://developer.android.com/google/gcm/client.html
sumber