Intereting Posts
Аутентификация моего «приложения» к облачным конечным точкам Google, а не «пользователь», Android. Как сделать запись аудио с высоким объемом? Как установить TextColor с помощью цветов setTextColor (ColorsStateList) Как избежать мягкой клавиатуры, подталкивающей мой макет? Android накладывает вид на все? Запрос поставщика контента для Android из командной строки (оболочка adb) Android AudioRecord заставляет другой поток использовать источник аудиосигнала MIC Как добавить дополнительный параметр тестового прогона в тестовые тесты Android Studio 2.3 Модуль ядра HAX не установлен Заполните оставшееся пространство с фиксированным соотношением сторон изображения Пустое пространство при масштабировании изображения в gridview Не удается найти кнопку «Sync Project with Gradle Files» в IntelliJ IDEA Pinch-Zoom с GLSurfaceView Черный экран на хром для android html5 видео Удалить и добавить страницу в FragmentPagerAdapter

Ошибка GCM: не зарегистрировано

Мне удалось проверить мой код GCM.

Но точно такой же код, я не мог получить GCM push и получил:

Ошибка GCM: не зарегистрирована.

Solutions Collecting From Web of "Ошибка GCM: не зарегистрировано"

@LKM Ответ GCM «Не зарегистрирован» означает следующее «Если он не зарегистрирован, вы должны удалить идентификатор регистрации из своей базы данных сервера, потому что приложение было удалено с устройства или у него нет широковещательного приемника, настроенного на получение com.google.android .c2dm.intent.RECEIVE намерения. " От документации . Проверьте, в каком случае вы получаете эту ошибку, когда приложение удаляется с устройства или вы описываете неправильный широковещательный приемник в AndroidManifest. Вы можете проверить свою функциональность GCM с помощью моего тестового GCM-сервера . Надеюсь, это поможет вам.

Если вы используете устройство для тестирования, вам нужно удалить InstanceID перед получением токена и повторного тестирования, потому что, как только вы перезаписываете APK, он отменяет регистрацию этого InstanceId, и вы получаете эту ошибку NotRegistered. Поэтому в вашем классе RegisterIntentService в функции onHandleIntent выполните следующие действия:

InstanceID instanceID = InstanceID.getInstance(this); try { instanceID.deleteInstanceID(); } catch(IOException e) { e.printStackTrace(); } instanceID = InstanceID.getInstance(this); 

Not Registered , когда GCM считает, что устройство не может обработать сообщение. Это происходит, если приложение удалено или неправильно сконфигурировано для обработки сообщения:

Введите описание изображения здесь

Основываясь на ответах @Samik и @ O'Rilla, я бы предложил следующие шаги:

  1. Удалите текущую установку с Android-устройства
  2. Удостоверьтесь, что <receiver> и <sender> определены в узле <application> в AndroidManifest.xml .
  3. Убедитесь, что у вас есть правильный <category android:name="COM.COMPANY.YOURAPP" /> в вашем <receiver>
  4. Убедитесь, что реализация Receiver правильная

Если вы действительно думаете, что ваш код правильный и по-прежнему возникают ошибки

 {"error": "NotRegistered"} 

Попробуйте удалить приложение вручную с телефона и снова запустить его (ваше устройство получит новый идентификатор регистрации).

По крайней мере, в моем случае проблема была решена!

У меня была эта ошибка, когда у меня был gcm-приемник вне приложения в файле манифеста. Переместил ресивер в область приложения, и все сработало. Очень счастливый кролик.

 <application> ... <receiver> ... </receiver> ... </application> 

Аккаунт Google является обязательным требованием для устройств под управлением Android 4.0.4 или ниже. http://developer.android.com/google/gcm/gcm.html

Вы также должны добавить в файл манифеста <uses-permission android:name="android.permission.GET_ACCOUNTS" /> .

Я использовал старый устаревший код для GCM:

 if (gcm == null) { gcm = GoogleCloudMessaging.getInstance(this); } String regId = gcm.register(SENDER_ID); msg = "Device registered, registration ID=" + regId; 

И при попытке перейти на новый путь:

 InstanceID instanceID = InstanceID.getInstance(this); String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Я получал ту же ошибку, и это заводило меня в течение двух твердых дней.

После того, как все в книге было исправлено, что было отключено GCM в консоли разработчиков, повторно включив его, а затем перейдите сюда: https://developers.google.com/mobile/add, чтобы создать новый файл google-services.json для Мое приложение для Android.

Также обратите внимание: RegistrationIntentService должна быть в корне вашего пакета, иначе это не сработает! (См. Этот пример для внедрения gcm в Android: https://github.com/google/gcm )

Надеюсь, это помогает кому-то, потому что я потерял дни на этом !!!! > <

Это означает, что вы неправильно указываете идентификатор регистрации. Поэтому для этого сначала запустите свое мобильное приложение, и ваш регистрационный идентификатор появится в виде токена. Поместите этот токен в код сервера приложений в качестве идентификатора регистрации. Идентификатор приложения дает идентификатор сервера, который вы можете получить с консоли разработчика Google, вашего проекта и учетных данных. Для Идентификатора отправителя укажите идентификатор проекта, который можно получить из проекта, настройки в консоли разработчика.