Почему я получаю "MismatchSenderId" со стороны сервера GCM?
Я пытаюсь создать push-сервис для своего приложения для Android, и я следую документации и примеру Google GCM по этому вопросу:
Я могу зарегистрировать / отменить регистрацию моего приложения для Android. Со стороны моего сервера я вижу, что у меня зарегистрирована одна подписка, но когда я пытаюсь отправить сообщение с сервера в свое приложение для Android, я всегда получаю следующую ошибку:
ошибка отправки сообщения на устройство #0: MismatchSenderId
для моего приложения для Android, я использую SENDER_ID = 200000000001.
и для моей серверной части, как говорит Google, я использую API_KEY = Aizxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
я следовал этому документу:
Я включил GCM в моей панели API Google тоже, но я получу это раздражающее сообщение об ошибке.
Как я могу исправить эту проблему?
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 и следуйте инструкциям).