У меня есть приложение, которое использует Google FCM для отправки push-уведомлений.
Когда я отправляю push-уведомление группе пользователей, я получаю ответ от MismatchSenderId
некоторых из них. Хотя у всех пользователей одно и то же приложение. Как некоторые пользователи могут получить успешный ответ, а другие - MismatchSenderId?
Я много исследовал и убедился, что добавил все необходимые компоненты FCM.
Какие-либо предложения?
РЕДАКТИРОВАТЬ:
Образец ответа:
{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
РЕДАКТИРОВАТЬ 2:
Вот код отправки на стороне сервера (PHP):
$fields = array
(
'to' => $token,
'data' => $data
);
$headers = array
(
'Authorization: key=AIza**************************',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode($fields) );
curl_exec( $ch );
curl_close( $ch );
ОБНОВИТЬ:
Похоже, проблема была решена с обновлениями SDK. Сейчас я использую последнюю версию com.google.firebase:firebase-messaging:9.6.1
, я больше не получаю MismatchSenderId.
firebase
firebase-cloud-messaging
ТареК Хури
источник
источник
Server Key
(его можно найти в консоли firebase на вкладке сервера), а неAPI_KEY
изgoogle-service.json
. Во-вторых, убедитесь, что вы правильно указали пункт назначения. Например,to" : "/topics/yourtopic"
если вы хотите отправить сообщение на все устройства (они должны сначала подписаться на эту тему). Или попробуйте отправить на конкретное устройство, тогда необходимо ввести токен устройства (полученный при первом запуске в службеcec5gH04....92IyHrB2K
Ответы:
Firebase обновила свои серверные ключи до новой версии. Используйте новые ключи вместо старых.
источник
Я нашел такое решение:
источник
ЭТО Сработало для меня:
Я использовал ключ сервера из другого проекта Firebase (скажем, Project 2). Я использовал тот же ключ сервера, который связан с моим проектом Android (скажем, Project 1), и он сработал. По моему опыту, использование одного приложения firebase для одного всего проекта Android решило проблему.
источник
В моем случае я просто ошибался с учетными данными проекта: использовал google-services.json из одного проекта и ключ сервера из другого.
источник
Просто к вашему сведению. Я столкнулся с этой ошибкой, хотя клянусь, приложение для Android, которое я тестировал, было создано с использованием последнего / самого лучшего файла google-services.json, и я мог отправить его из консоли FCM в приложение. Я перестроил приложение после выполнения,
Clean Project
и теперь я могу отправить его в приложение с помощью зарегистрированного токена FCM. Так что, может быть, попробуйте перестроить заново, прежде чем надолго биться головой о стену.источник
Мы потратили часы и часы, чтобы решить эту проблему. Мы обнаружили, что токен генерируется с использованием разных настроек учетной записи FCM (google-services.json), а уведомление устанавливается с использованием другой учетной записи FCM. Когда мы синхронизировали оба, это сработало как шарм.
источник
Я обнаружил, что
senderId
это отличается от номера проекта в консоли FCM,поэтому я повторно загрузил google-services.json, и все работает нормально
источник
Моя проблема была решена путем ввода правильного ключа, как показано ниже.
Скопируйте ключ сервера, как это изображение
А затем скопируйте этот код в почтовый ящик, как это изображение
и тело в ряд, как на этой картинке
ЗАМЕТКА:
источник
Я перепроверил все учетные данные
Добавлен новый ключ сервера и удален старый
Снова скачал google-services.json
Ничего не решило проблему
Затем я просто очищаю проект, а затем перестраиваю проект, после чего он работает нормально.
источник
Убедитесь, что вы удалили весь код Parse из своего приложения (библиотеки, приемники в AndroidManifest и т. Д.). Я обнаружил, что периодически push-уведомления не работают. По моим наблюдениям, он будет работать с новыми установками, но не с обновлениями приложений из магазина воспроизведения.
Я считаю, что что-то внутреннее для Parse противоречило FCM (Parse использует GCM, поэтому я предполагаю, что это было связано с одновременным использованием GCM и FCM). Как только я удалил все приемники и библиотеки Parse, все заработало.
источник
На самом деле причин этой проблемы много. Моя была из-за того, что прошел недействительный токен. Я передавал тот же токен, сгенерированный из одного приложения, и использовал тот же токен в другом приложении. После обновления токена у меня работает.
источник
Для устранения этой ошибки при несоответствии идентификатора отправителя в fcm
{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
произошла ошибка,
Итак, нам нужно сначала, в FCM, зарегистрировать приложение, например MyDemoApplication
После этого FCM сгенерирует ключ сервера, т.
AIzaSyB9krC8mLHzO_TtECb5qg7NDZPxeG03jHU
Е. И идентификатор отправителя, т.346252831806
Е. В таком формате.После того, как в Android Studio наш проект подключается к этому проекту, созданному FCM, то есть MyDemoApplication
И самый важный шаг - это токен устройства или идентификатор регистрации. Эти токены должны быть созданы в Android Studio ..
После этого, используя идентификатор отправителя и ключ API в проекте веб-API, вы обязательно получите уведомление
источник
проверьте gcm_sender_id в manifest.json. Если несоответствие - исправьте, но вам нужно создать новых подписчиков для нового идентификатора отправителя. Существуют подписчики ломаются.
источник
Согласно ответу "MismatchSenderId", это несоответствие между FireBase и вашим локальным "google-services.json", вы должны убедиться, что оба манифеста совпадают
В консоли FireBase перейдите в «YourProject> Project OverView> Cloud Messaging», вы увидите «SenderID», который ДОЛЖЕН совпадать с «google-services.json» в вашем проекте Android.
Лучшее, что вы можете сделать, это загрузить окончательный файл json из вкладки «Общие» и поместить его в свой проект.
источник
У меня была такая же ошибка при отправке push-уведомления. Получите обновленный файл google-services.json и замените им. Работал у меня.
источник
У меня была такая же проблема, и я исправил ее так:
Вуаля ...
источник
У меня работает обновление инициализации firebase ..
источник
Для меня проблема заключалась в том, что я использовал
phonegap-plugin-push
in cordova, тестируя приложение с приложением phonegap.Проблема заключается в том, что по какой-то причине с этим плагином приложение phonegap перехватывает его и возвращает фиктивный регистрационный ключ, независимо от того, какой у вас идентификатор отправителя.
Итак, чтобы заставить его работать (при условии, что у вас есть все ваши ключи), нужно протестировать вашу программу каким-либо другим способом, с помощью эмулятора или эмуляции Android через usb. И ваши ключи будут совпадать.
Надеюсь, это кому-то сэкономит время.
источник
Вы, вероятно, делаете то, что делал я. Токен GCM больше не то же самое, что FCM. проверьте, используете ли вы идентификатор токена GCM вместо FCM. просто переопределите FirebaseInstanceIdService и убедитесь, что вы получили правильный идентификатор. В какой-то момент я думал, что они такие же, но теперь их нет. Я зарегистрировал тест и увидел. после этого также обновите google-services.json, как другие говорят, в целях безопасности.
источник
Я потратил на это целые дни.
В моем случае я подписался на этот блог, чтобы использовать Postman и получить ошибку mismatchsenderid. Раньше я получал
messaging/mismatched-credential
, и люди сообщали, что их клиентское приложение использует несколько проектов.Однако для меня у меня есть индивидуальный подход, веб-приложение и проект. НО , я размещаю все приложения через
ng serve
порт по умолчанию 4200. Таким образом, независимо от того, в какой паре проект / приложение я разрабатывал, я всегда получал один и тот же токен из своего клиентского веб-приложения, используяAngularFireMessaging.requestToken
- этот токен всегда был токеном, созданным на моем первом запуск приложения firebase в разработке.В качестве обходного пути я запускаю разные приложения / проекты на разных портах и получаю подходящие токены для соответствующих проектов.
источник
Примечание. Я обрезал первую часть токена FCM (до
:
), и ошибка былаMismatchSenderId
Исправил мой скрипт и теперь все работает нормально.
источник
В моем случае кто-то удалил сертификаты APN SSL для моего приложения на портале разработки Apple.
Это решило проблему.
источник
В моем случае это было очень просто. Я извлекал из базы данных неправильный идентификатор RegistrationId. После того, как я выбрал правильный идентификатор, все заработало.
источник
У меня была такая же проблема в моем проекте response-native - node.js. Хотел отправлять уведомления в андроиде. Все было настроено и работало нормально (т.е. я мог отправлять уведомления с node.js и получать уведомления на устройстве Android).
Через несколько дней мне пришлось использовать другую учетную запись firebase, поэтому я изменил файл google-services.json в папке android / app моего проекта и перестроил проект. Но когда я снова попытался отправить уведомление с моего сервера, у меня возникла ошибка -
Решение:
XML-файл в расположении - app / build / generated / res / google-services / {build_type} /values/values.xml не обновлялся автоматически в соответствии с новым google-services.json . Он по-прежнему состоял из старых значений из моего предыдущего файла google-services.json . Пришлось изменить values.xml вручную файл .
Так выглядит файл app / build / generated / res / google-services / {build_type} /values/values.xml (вам нужно изменить его вручную, если он не обновляется автоматически в соответствии с google-services.json ) -
Вы можете обратиться к этим ссылкам:
источник
У меня были большие проблемы с выяснением, почему я получал статус "MismatchSenderId". Я добавил зависимость gms в корень,
build.gradle
но моя ошибка заключалась в том, что плагин gms не применялся в приложенииbuild.gradle
.Если у вас нет этой строки в приложении
build.gradle
, это может быть причиной того, что уведомление не работает:apply plugin: 'com.google.gms.google-services'
источник
Я заметил, что когда в GCM создается идентификатор устройства, вы не можете отправлять push-сообщения через FCM с использованием нового ключа сервера, вы должны использовать старый ключ API.
источник
Я пытался отправить уведомление, используя fcm api "https://fcm.googleapis.com/fcm/send" от почтальона. Ключ сервера в порядке, и токен вставлен правильно, но по-прежнему выдает ошибку «MismatchSenderId».
Затем представил следующую зависимость в файле gradle на стороне Android.
и он начал получать уведомления на устройстве
источник
Я тоже получаю ту же ошибку. Я скопировал api_key и перешел в google_services.json. после этого это работает для меня
попробуй это
источник
У вас будет серверный ключ вроде этого AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY, доступный в разделе настроек консоли firebase console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging .
Укажите правильный ключ с вашим кодом и повторите попытку.
источник