Почему я получаю «MismatchSenderId» со стороны сервера GCM?

Я пытаюсь создать услугу push для моего приложения для Android, и я следую документации и примеру Google GCM по этому вопросу:

Я могу зарегистрировать / отменить регистрацию моего приложения для Android. С моей стороны на сервере я вижу, что у меня зарегистрирована одна подписка, но когда я пытаюсь отправить сообщение с сервера на свое приложение для Android, я всегда получаю следующую ошибку:

Ошибка отправки сообщения на устройство # 0: MismatchSenderId

Для моего Android-приложения я использую SENDER_ID = 200000000001.

И для моей серверной стороны, когда Google говорит, что я использую API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs

Я следовал этому документу:

http://developer.android.com/guide/google/gcm/demo.html

Я также включил GCM в панель API Google, но я получу это раздражающее сообщение об ошибке.

Как я могу исправить эту проблему?

Solutions Collecting From Web of "Почему я получаю «MismatchSenderId» со стороны сервера GCM?"

Ваш сервер использовал новый идентификатор регистрации, возвращенный сервером GCM, в ваше приложение? У меня возникла эта проблема, если вы пытаетесь отправить сообщение на регистрационные идентификаторы, выданные старым сервером C2DM.

А также дважды проверьте идентификатор отправителя и API_KEY, они должны совпадать или вы получите эту ошибку MismatchSenderId. В консоли API Google просмотрите URL-адрес вашего проекта:

https://code.google.com/apis/console/#project:xxxxxxxxxxx 

Xxxxxxxxx – это идентификатор проекта, который является идентификатором отправителя.

И убедитесь, что API-ключ принадлежит «Ключ для серверных приложений (с блокировкой IP-адресов)»

Несоответствие происходит, если вы не используете числовой идентификатор. ИД проекта НЕ ИДЕНТИВНЫЙ ИДЕНТИФИКАЦИЯ !! Мне потребовалось 9 часов, чтобы понять это. Для всей путаницы, созданной Google, проверьте следующую ссылку, чтобы получить числовой идентификатор.

https://console.cloud.google.com

вместо

https://console.developers.google.com

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

Обновление: – Все изменилось. Теперь идентификатор отправителя с firebase.

Перейдите на страницу https://console.firebase.google.com и выберите свой проект. В настройках -> облачные сообщения вы можете найти идентификатор отправителя.

И это работает!

Пожалуйста, запустите сценарий под терминалом

 curl -X POST \ -H "Authorization: key= write here api_key" \ -H "Content-Type: application/json" \ -d '{ "registration_ids": [ "write here reg_id generated by gcm" ], "data": { "message": "Manual push notification from Rajkumar" }, "priority": "high" }' \ https://android.googleapis.com/gcm/send 

Он выдаст сообщение, если оно выполнено успешно или не выполнено

Недавно я столкнулся с той же проблемой, и я попробовал разные значения для «gcm_sender_id» на основе идентификатора проекта. Однако значение «gcm_sender_id» должно быть установлено на «Номер проекта».

Вы можете найти это значение в: Меню> IAM и Admin> Настройки.

Смотрите скриншот: GCM Project Number

Вашему приложению Android нужно исправить 12-значный идентификатор номера (aka GCM Project Number). Если этот 12-значный номер неверен, вы также получите эту ошибку.

Этот 12-значный номер найден в вашей консоли Google Play в вашем конкретном приложении, «Сервис и API» -> «LINKED SENDER IDS»,

Используйте идентификатор и идентификатор отправителя, созданный здесь: http://developers.google.com вместо этого (сначала выполните навигацию по облачным службам Google и следуйте инструкциям).

Если вы используете собственный Android, проверьте файл AndroidMaifest.xml :

 <meta-data android:name="onesignal_google_project_number" android:value="str:1234567890" /> <!-- its is correct. --> 

вместо

  <meta-data android:name="onesignal_google_project_number" android:value="@string/google_project_number" /> 

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

 InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope) 

AuthorizedEntity – номер проекта сервера