Идентификатор регистрации равен нулю от gcm в android 2.3.3, 2.3.5, но он не является нулевым и работает в android 2.3.4, 4.0.4

private void registerClient() { try { GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { registrationStatus = "Registering..."; GCMRegistrar.register(this, "1074338555805"); regId = GCMRegistrar.getRegistrationId(this); registrationStatus = "Registration Acquired"; sendRegistrationToServer(); } else { registrationStatus = "Already registered"; } } catch (Exception e) { e.printStackTrace(); registrationStatus = e.getMessage(); } } 

Идентификатор регистрации равен нулю от gcm в android 2.3.3, 2.3.5, но он не является нулевым и работает в android 2.3.4, 4.0.4.

Как это четко указано в Руководстве по настройке Google Play Services.

https://developer.android.com/google/gcm/client.html

Применение OnCreate:

  // Check device for Play Services APK. If check succeeds, proceed with // GCM registration. if (checkPlayServices()) { gcm = GoogleCloudMessaging.getInstance(this); regid = getRegistrationId(context); if (regid.isEmpty()) { registerInBackground(); } } else { Log.i(TAG, "No valid Google Play Services APK found."); } 

Зарегистрируйтесь в фоновом коде:

 /** * Registers the application with GCM servers asynchronously. * <p> * Stores the registration ID and app versionCode in the application's * shared preferences. */ private void registerInBackground() { new AsyncTask() { @Override protected String doInBackground(Void... params) { String msg = ""; try { if (gcm == null) { gcm = GoogleCloudMessaging.getInstance(context); } regid = gcm.register(SENDER_ID); msg = "Device registered, registration ID=" + regid; // You should send the registration ID to your server over HTTP, // so it can use GCM/HTTP or CCS to send messages to your app. // The request to your server should be authenticated if your app // is using accounts. sendRegistrationIdToBackend(); // For this demo: we don't need to send it because the device // will send upstream messages to a server that echo back the // message using the 'from' address in the message. // Persist the regID - no need to register again. storeRegistrationId(context, regid); } catch (IOException ex) { msg = "Error :" + ex.getMessage(); // If there is an error, don't just keep trying to register. // Require the user to click a button again, or perform // exponential back-off. } return msg; } @Override protected void onPostExecute(String msg) { mDisplay.append(msg + "\n"); } }.execute(null, null, null); ... }