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


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

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

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

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

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

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

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

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

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

8 67

8 ответов:

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

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

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

xxxxxxxxx-это идентификатор проекта, который является отправителем ИДЕНТИФИКАТОР.

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

несоответствие происходит, когда вы не используете числовой идентификатор. Идентификатор проекта не является идентификатором отправителя!! Мне потребовалось 9 часов, чтобы выяснить это. Для всей путаницы, созданной google, проверьте следующую ссылку, чтобы получить числовой идентификатор.

https://console.cloud.google.com

вместо

https://console.developers.google.com

надеюсь, что это помогает!!

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

перейти к 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

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

authorizedEntity - это номер проекта сервера

ваше приложение для android должно исправить 12-значный номер id (он же номер проекта GCM). Если это 12-значное число неверно, то вы также получите эту ошибку.

этот 12-значный номер находится в вашей консоли Google Play под вашим конкретным приложением, 'Service & API' - > 'LINKED SENDER IDS'

Если использовать для родного Android, проверьте ваш AndroidMaifest.xml file:

<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" />

надеюсь, что это помогает!!

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