C2DM TO Google Cloud Messaging (GCM)
As you may have seen, Google is migrating its Push Notification System.
Google Developer guide for GCM
I guess I am not alone wondering : are the tokens obtained from C2DM still valid for GCM ?
If not, it means that I need all my users to update my app with a new version updating the tokens on my servers …
I can keep the parallel systems which is something I don’t think it’s a good solution
Continue using C2DM until it’s finished, then I die with it 🙂
3 Solutions collect form web for “C2DM TO Google Cloud Messaging (GCM)”
Although client side migration is easy (just change the ‘sender’ from email address to a project id), you will still face transition headaches if your app has been using C2DM for a while. See my question here: Posting GCM notification to existing C2DM registration ids
Basically the problem is during the transition, you need to maintain device registration ids from the old C2DM app, and the new reg ids from your newer app that uses GCM. Unless you can force all your users to upgrade all at once, you have to build additional logic (i.e. add a new column in the database table to indicate GCM reg id) in the server to deal with sending notifications to both C2DM and GCM for a foreseeable future.
If your server only send notifications to all devices, then this should be easy migration, as you can just blast both C2DM and GCM notifications to all devices in your database, and progressively remove stale or those NotRegistered devices from the old C2DM registrations. As time goes by you should see less and less C2DM device registration ids in your database.
I had migrated my app from C2DM to GCM. No, I shouldn’t say migrated. The correct term to be ‘co-exist’ for both C2DM and GCM. Because I can’t force all my current user upgrade to GCM. My goal is to make sure both new(refer to GCM) and exist(refer to C2DM) user able to get push messaging.
For the client side:
- Change sender to project id
For the server side:
- Add a new column in the db to store GCM registration id.
- If user record with gcm register id > then push to gcm server > else c2dm server
So far I am able to achieve my objection. But my only concern is, when the c2dm going to fully shutdown? If the day really coming, how I suppose to force my old user upgrade to gcm?
There is a migrating guide on the Android developer documentation site.
C2DM will continue to give support for a while, It is better to migrate our application in GCM and publish a updated version of our application. (As per my thinking)