C2DM TO Google Cloud Messaging (GCM)

As you may have seen, Google is migrating its Push Notification System.

Google Developer guide for GCM

  • Retrieve album art using FFmpeg
  • How to read crash reports from Developer Console
  • OnCreate not called on Activity
  • ListView selection remains persistent after exiting choice mode
  • Problems importing an Android project into Eclipse
  • How to Calibrate Android Accelerometer & Reduce Noise, Eliminate Gravity
  • 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 🙂

    Related posts:

    JavaScript alert not working in Android WebView
    Are vector images usefull for Android?
    Use density independent pixels for width and height when creating a bitmap
    setSelection on Spinner based on rowId
    Getting NoClassDefFoundError: android.os.AsyncTask
    Convert C.jstring to native string in Go
  • How do you enable a microphone input in the android emulator
  • Android - Setting a Timeout for an AsyncTask?
  • Intercept incoming flash messages on android mobile
  • Screenshot shows black
  • How to draw a transparent circle?
  • Android: No Activity found to handle Intent error? How it will resolve
  • 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:

    1. Change sender to project id

    For the server side:

    1. Add a new column in the db to store GCM registration id.
    2. 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)

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.