GCM4Public - GCM for Public
This is an open-source project providing service to collect GCM client registrations and sending to all of them a GCM message when needed.
Please fill this form with your details to send message to your users
It is prefilled with sample data. Devices which has GCM4Public-Client installed will receive this message if you won't provide different senderId and API key. Please don't be spammy and provide your correct data.
GCM4Public open-source GCM service
The event
During the +GDG Vilnius event Hackathon: Google Cloud Messaging for Android, this open source project was created:
https://github.com/gdgvilnius/GCM4Public-GAE-Server
The server
The Demo Android application using this GCM4Public service is open here:
https://github.com/gdgvilnius/GCM4Public-Android-Client
This is the Java class which sends GCM message:
https://github.com/gdgvilnius/GCM4Public-GAE-Server/blob/master/src/lt/andro/gcm4public/SendGCM2Clients.java
The client
To use Google Cloud Messaging for Android you need to register at Google's API console:
https://code.google.com/apis/console
This is the Java class responsible for handling GCM messages and registers on GCM4Public server:
https://github.com/gdgvilnius/GCM4Public-Android-Client/blob/master/src/lt/andro/gcm4public/GCMIntentService.java
Here you can see how device initiates registration on the GCM:
https://github.com/gdgvilnius/GCM4Public-Android-Client/blob/master/src/lt/andro/gcm4public/MainActivity.java
Sending messages
You'll get the project number (aka senderId) and API Key. These two are used in this service to send GCM notifications. And you need to provide it in this form: https://gcm4public.appspot.com/
The service is secure, because only senderId and phones registrationId are stored. The API key is not saved on server and you need to provide it every time you want to send a message to the server.
The senderId is used to filter app's users, so one application would not disturb other's users.
Multiple applications can use this single server: https://gcm4public.appspot.com/
Google App Engine
It's running on Google App Engine so it has some limitations, but I think, it might be running ok for few hundred small apps. If you have tens of thousands users, please fork the project on github and put on your separate Google App Engine account with separate daily limits.
Other resources
Blog post: http://www.andro.lt/2012/11/google-cloud-messaging-for-android.html
Google Cloud Messaging for Android by Francesco Nerieri:
https://developers.google.com/events/io/sessions/gooio2012/100/
and get the slides here:
http://commondatastorage.googleapis.com/io2012/presentations/live%20to%20website/100.pdf
If you want to read more, here is the link on developer.android.com about GCM for Android:
http://developer.android.com/guide/google/gcm/gs.html