How can we do PUSH notifications without Google's GCM?
I am bringing this up now, because it affects how we are going to structure the app down the road. https://we.riseup.net/leap+client/android-notes#push-notifications
There are many options for push notifications, unfortunately, most have problems. Here are a few.
GCM Google's push system (GCM) requires that the user has Google Play Services/Store installed (and a Google account for the narrow segment of 4.0 to 4.0.4) http://developer.android.com/google/gcm/index.html
- Play Services receives the message and launches the corresponding Intent, meaning it works even if the app isn't running (it will be launched)
- Battery and network topology (or disconnected) friendly (GCM will queue the message until successful delivery)
- It requires that the push comes from the developer of the application (because of how the push api keys work). this makes a single app that supports providers hard. work arounds: ** Two apps: one work around is to require the user to install two apps (one from leap, and a thin one from the provider that just receives notifications and passes them off to leap client) ** Branded apps: idea here is that the leap client is always distributed as a branded client build by a particular provider. ** Don't use google's push notifications
SMS Carriers all agree to deliver these messages to devices. Android allows apps to read SMS with permission.
- Kludgy. Pre 4.4, it will require a funny contact with messages sent, seen by the users in their SMS app.
- Expensive (for providers and users).
- Bad Idea.
Imap IDLE Allows for periodically refreshed (by the device) high latency TCP connections that the server can send messages back down. Could be hacked as a channel for signaling.
- Requires a service to be running to receive messages
SyncML / SAN Good sounding protocol to send structured data to clients
- Seems to leave it as an exercise for the developer to figure out how to keep a connection alive or do the actual push'ing https://en.wikipedia.org/wiki/SyncML http://technical.openmobilealliance.org/Technical/release_program/SyncML_archive.aspx
XMPP There are various extensions to XMPP that are designed to improve performance and availability for mobile (battery constrained, network-roaming and -unreliable)
- I have seen several articles on this and will link to them here or flesh out at a later time https://stackoverflow.com/questions/1243066/does-android-support-near-real-time-push-notification/5695867#5695867
Deacon https://github.com/davidrea/Deacon 2 years stale, unsure of its effectiveness, more research. There are other initiatives like this and I'm not sure if any have seen development in awhile.
More research is warranted. There are likely at least a handful of others who are attempting to improve on this space.
(from redmine: created on 2013-04-15)