Check the registration ID that is created on the client side. It seems that the registration identifier on the client side and on the server side does not match.
Here is an explanation on the GCM page.
Check the formatting of the registration ID that you are transferring to the server. Make sure that it matches the registration ID that the phone receives at com.google.android.c2dm.intent.REGISTRATION and that you are not truncating it or adding extra characters. It happens when the error code is InvalidRegistration.
source share