Intereting Posts
Получить ключевое имя jsonarray Эквивалент window.close в Phonegap с помощью InAppBrowser Есть ли способ создать службу фонового процесса, которая будет запускаться независимо от того, создано ли приложение, оно еще работает? Обновление виджета через короткие промежутки времени с использованием API 19+ Игнорирование файлов из Android APK Пометить нижнюю часть андроида Ошибка genymotion openGL Как открыть личные файлы, сохраненные во внутреннем хранилище, с помощью Intent.ACTION_VIEW? \ Build \ intermediates \ res \ resources-anzhi-debug-stripped.ap_ 'для свойства' resourceFile 'не существует Печать с Android Как определить возможности аудио на Android? Который лучше добавляет флаг или задает флаг во весь экран и экран ArrayAdapter – фильтрация с несколькими поисковыми терминами Android Show MediaController Как настроить взаимодействие с ScrollView, чтобы пользователи случайно не прокручивались в неправильном направлении?

GCM Android: onRegistered () не называется

У меня проблема с GCM на Android. Он не может выполнить onRegistered() вызов onRegistered() или когда-либо возвращать хороший regId на одном из моих тестовых устройств (Droid2), но он отлично работает на другом устройстве (Galaxy Nexus).

Я следую основному примеру здесь . Вызывающий выглядит следующим образом:

 GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) GCMRegistrar.register(this, Constants.SENDER_ID); else Log.v(TAG, "Already registered"); 

И мой манифест имеет это:

 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> 

а также

 <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.gcl.myapp" /> </intent-filter> </receiver> 

Почему не onRegistered() обратный вызов onRegistered() ? И что может заставить его работать на одном устройстве, но терпеть неудачу на другом? Благодарю.

Solutions Collecting From Web of "GCM Android: onRegistered () не называется"

Если он работает на некоторых устройствах, но не в других, это связано с одним из следующих:

  • Перед Android 4.0.4 для работы устройства требуется действительная учетная запись google.
  • GCM работает только на устройствах с Play Store App и API 8 и далее.
  • Ваш манифест плохо отформатирован – используйте Lint для проверки!
  • Устройство / приложение уже зарегистрировано, реализация Play не может вернуться снова. Попробуйте GCMRegistrar.unregister(this); первый.

Надеюсь, это поможет!

У меня такая же проблема. Если вы используете AngularJS + IonicFramework, вам не нужно это делать:

После создания фабрики с помощью функции onDeviceReady создается функция onNotificationGCM. Что-то вроде этого:

 app.factory('PushProcessingService', function () { .. }); function onNotificationGCM(e) { } 

Я создавал onNotificationGCM внутри моей фабрики. Это решает мою проблему.