it-swarm.com.ru

Почему я получаю "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 на своей панели Google API, но получаю это досадное сообщение об ошибке.

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

69
Vahid hashemi

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

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

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

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

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

65
azgolfer

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

https://console.cloud.google.com

вместо

https://console.developers.google.com

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

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

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

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

22
Ajay Singh

Пожалуйста, запустите скрипт ниже в вашем терминале

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

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

7
Raj Kumar

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

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

Смотрите скриншот: Номер проекта GCM

4
mpavel

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

Этот 12-значный номер находится в консоли Google Play в вашем приложении «Сервис и API» -> «ССЫЛКИ НА СВЯЗИ 

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

авторизованный объект - номер проекта сервера. 

2
Ivan Vizuet

Это происходит, когда HTTP-запрос параметров Server key и Sender ID не соответствует друг другу. По сути, и идентификатор сервера, и ключ сервера должны принадлежать одному и тому же проекту Firebase. Пожалуйста, обратитесь к изображению ниже. В случае смешивания этих параметров из разных проектов Firebase возникнет ошибка MismatchSenderId enter image description here

0
Chamath Jeevan