FCM getting MismatchSenderId

FirebaseFirebase Cloud-Messaging

Firebase Problem Overview


I have an application that uses Google FCM for sending push notifications.

When i send a push notification to a group of users, i get a response of MismatchSenderId for some of them. Even though, all users have the exact same application. How can some of the users get a success response and others get a MismatchSenderId?

I have researched a lot and made sure I have added all prerequisites that FCM needs.

Any suggestions?

EDIT:

Sample response:

{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

EDIT 2:

Here is the server side sending code (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 );

UPDATE:

It seems that the issue has been resolved with the SDK updates. I am using now the latest com.google.firebase:firebase-messaging:9.6.1, I don't get "MismatchSenderId" anymore.

Firebase Solutions


Solution 1 - Firebase

Firebase has upgraded their server keys to new version. Use new keys instead of old one.

> go to settings->project settings->cloud messaging tab

enter image description here

Solution 2 - Firebase

I found this solution:

  • First I check server key is correct or not it was correct which is like AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Then I check Sender Id like 79XXXXXXXX it was also correct.
  • Main issue was in device_ID(UDID) to whom I have to send the notification. Actually DeviceId we got on android side in FCM is different than GCM. You can't use GCM created DeviceId in FCM.

Solution 3 - Firebase

Just an FYI. I was running into this error, even though I swear the android app I was testing was built with the latest/greatest google-services.json file and I could send from the FCM console to the app. I rebuilt the app after doing a Clean Project and now I can send to the app with the FCM token it registers. So, maybe try a clean rebuild before beating your head against the wall for too long.

Solution 4 - Firebase

THIS WORKED FOR ME:

  • CHECK WHICH FIREBASE PROJECT YOUR CURRENT ANDROID PROJECT IS LINKED TO AND USE Server Key FROM THAT PROJECT.

I was using Server key from a different firebase project(say Project 2). I used the same server key as linked with my android project(Say Project 1) and it worked. In my experience, using one firebase app for one entire android project seemed to fix the problem.

Solution 5 - Firebase

In my case, I just was mistaking about project credentials: using google-services.json from one project, and server key from another.

Solution 6 - Firebase

We spent hours and hours to resolve this issue. What we found that token was being generated using different FCM account settings (google-services.json) and notification was being set using different FCM account. When we synced both it worked like a charm.

Solution 7 - Firebase

My problem was solved by entering the correct key as shown below.

Copy Server key like this picture enter image description here

And then copy this code in post man like this picture enter image description here

and Body is row like this picture

enter image description here NOTE:

  • You must add key= before Server key in header
  • Make sure you enter the header keys correctly (Authorization = "key=..." and ContentType = "application/json")
  • You have sent the request to the correct address (https://fcm.googleapis.com/fcm/send and Post method)

Solution 8 - Firebase

Make sure you remove all the Parse code from your app (libraries, receivers in AndroidManifest, etc). I found that intermittently push notifications were not working. From my observations, it would work on fresh installs but not app updates from the play store.

I believe something internal to Parse was conflicting with FCM (Parse uses GCM, so I'm guessing it had to do with using GCM and FCM simultaneously). As soon as I ripped out all the Parse receivers and libraries, things worked great.

Solution 9 - Firebase

I found that the senderId is different from the project number in the FCM console
so I re-downloaded google-services.json and everything works fine

Solution 10 - Firebase

  • I cross verified all the credentials

  • Added new server key and deleted old one

  • Downloaded google-services.json again

Nothing solved the issue

Then I just clean the project and then rebuild the project.After that it's working fine

Solution 11 - Firebase

Actually there are many reasons for this issue. Mine was because of Invalid token passed. I was passing same token generated from one app and using same token in another app. Once token updated , it work for me.

Solution 12 - Firebase

For eliminate this error for mismatch sender Id In fcm

{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

there is error occured,

  1. So we required first, In FCM, register Application e.g MyDemoApplication

  2. After that FCM will generate server key i.e AIzaSyB9krC8mLHzO_TtECb5qg7NDZPxeG03jHU and sender Id i.e 346252831806 these format like these.

  3. After In Android Studio, our project is connect to these FCM created project i.e MyDemoApplication

  4. And most important step is there required to device token or registration id. These token must created in Android Studio..

  5. After that using Sender Id and API key in web API project u will be definitely getting notification

Solution 13 - Firebase

I spent hours on this and finally figured it out. This problem happens if service account your sender application is using differs from the service account your receiver is using.

You can find out your receiver service account via Firebase -> Project Overview -> Project Settings -> Service Accounts and generate a new key and use that key when you are initializing your FirebaseApp in the sender:

FileInputStream serviceAccount = new FileInputStream("YOUR_PATH_TO_GENERATED_KEY.json");
GoogleCredentials googleCredentials = GoogleCredentials.fromStream(serviceAccount);
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(googleCredentials).build();
firebaseApp =  FirebaseApp.initializeApp(options);

This initialization need to be done once before you send push notifications.

In my case, I had done everything correctly and I still had this problem. I had made some changes in the "google-services.json" used in the receiver app and I noticed AndroidStudio was not using my new file. The solution was so simple:

AndroidStudio -> Build -> Clean Project and Build -> Rebuild Project

Solution 14 - Firebase

check gcm_sender_id in manifest.json If mismatch - correct, but you need make new subscribers for new sender Id. Exists subscribers break.

Solution 15 - Firebase

As per response "MismatchSenderId", this is a mismatch between FireBase and your local "google-services.json", you have to make sure that both manifests matches

In FireBase console you go to "YourProject > Project OverView > Cloud Messaging" you'll see the "SenderID" which MUST match with the "google-services.json" in your Android project.

Best thing you can do is download the final json file from "General" tab and place it in your project.

Solution 16 - Firebase

I had the same error while trying to send push notificaion. Get the updated google-services.json file and replaced with it. Worked for me.

Solution 17 - Firebase

I was trying to send notification using the fcm api "https://fcm.googleapis.com/fcm/send" from postman. Server key was ok and token was pasted fine but was still getting error "MismatchSenderId".

Then introduced the follwoing dependency in the gradle file on android side.

implementation platform('com.google.firebase:firebase-bom:25.12.0') 

and it started receiving notifications on the device

Solution 18 - Firebase

I got this Error after I added more Product Flavours to my current App, it seems like it uses the package name to generate the FCM Token, so to reslove the issue I have to add an app for eatch Flavour with it's corresponding PackageName, and update the google-services.json file with the latest generated one wich include Client info for each Flavour(Package Name).

Solution 19 - Firebase

Make sure that your "package_name" in the google-service.json file is your applicationId from build.gradle(app) file.

  "client_info": {
    "mobilesdk_app_id": "",
    "android_client_info": {
      "package_name": "" // -> your applicationId
    }
  }

Solution 20 - Firebase

Updating firebase initialization works for me..

<script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
 <script>
  // Initialize Firebase
  // TODO: Replace with your project's customized code snippet
  var config = {
    apiKey: "<API_KEY>",
    authDomain: "<PROJECT_ID>.firebaseapp.com",
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
    storageBucket: "<BUCKET>.appspot.com",
    messagingSenderId: "<SENDER_ID>",
  };
  firebase.initializeApp(config);
</script>

Solution 21 - Firebase

For me the problem was that I was using the phonegap-plugin-push in cordova, testing the app with the phonegap app.

The problem with this is that for some reason with this plugin, the phonegap app intercepts it and returns a dummy registration key, no matter what sender ID you have.

So to make it work (as long as you have all your keys right) is to test your program some other way, with an emulator, or android emulation via usb. And your keys will match.

Hopefully this saves someone some time.

Solution 22 - Firebase

your probably doing whwat i was doing. GCM token is not the same as FCM anymore. check if your pulling the GCM token ID instead of FCM. just override FirebaseInstanceIdService & ensure your getting the right ID. i thought at one point they were the same but now there not. i logged a test and saw. after you do that also update google-services.json like others say as a safety.

Solution 23 - Firebase

I have noticed that when a device id is created in GCM you cannot send push messages through FCM using the new server key, you have to use the old API-key.

Solution 24 - Firebase

I wasted days on this.

In my case, I followed this blog to use Postman and get the mismatchsenderid error. Previously, I was getting messaging/mismatched-credential, and people reported that their client app used multiple projects.

However, for me, I have one-to-one, a web app and a project. BUT, I host all apps via ng serve on default port 4200. So regardless of what project / app pair I was developing on, I would always get the same token from my client web app using AngularFireMessaging.requestToken - this token was always the token created on my first ever run of a firebase app in development.

As a work around, I start different apps / projects on different ports and get proper tokens for respective projects.

Solution 25 - Firebase

I had big trouble figuring out why I was getting a "MismatchSenderId" status. I added the gms dependency in the root build.gradle but my error was actually not applying the gms plugin in the app build.gradle.

If you have don't have this line in the app build.gradle, this could be the reason why the notification are not working: apply plugin: 'com.google.gms.google-services'

Solution 26 - Firebase

Note: I had truncated the first part of the FCM token (before :) and the error was MismatchSenderId

Fixed my script and now everything works fine.

Solution 27 - Firebase

In my case someone had deleted APN SSL Certificates for my app in Apple development portal.

  • I needed to create new certificates: Identifiers / My AppId / Push Notifications / Edit.
  • Then I uploaded them to the Firebase project from console: Project Settings / Cloud Messaging / iOS app configuration / APNs Certificates.

This solved the problem.

Solution 28 - Firebase

In my case it was very simple. I was pulling the wrong registrationId from the database. After I pulled the correct Id, it worked.

Solution 29 - Firebase

I had the same issue in my react-native - node.js project. I wanted to send notifications in android. Everything was set-up and working fine (i.e. I was able to send notifications from node.js and receive notifications on android device).

After a few days, I had to use a different firebase account, so I changed the google-services.json file in my project's android/app folder and rebuilt the project. But, when I tried sending notification from my server once again, I got an error -

{.............
  errorInfo: {
    code: 'messaging/mismatched-credential',
    message: 'SenderId mismatch'
  },
  codePrefix: 'messaging'
}

Solution:

the XML file at the location - app/build/generated/res/google-services/{build_type}/values/values.xml was not getting automatically updated according to new google-services.json. It still consisted of old values from my previous google-services.json file. I had to change values.xml file manually.

This is how app/build/generated/res/google-services/{build_type}/values/values.xml file look (You need to change it manually if it does not get updated automatically according to google-services.json)-

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <! -- Present in all applications -->
    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>

    <! -- Present in applications with the appropriate services configured -->
    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>
    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>
    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>
    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>
    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="project_id" translatable="false">mydemoapp</string>

</resources> 

You can refer to these links:

  1. https://firebase.google.com/docs/projects/multiprojects
  2. Processing the JSON file: https://developers.google.com/android/guides/google-services-plugin#processing_the_json_file.

Solution 30 - Firebase

I had the same problem, and I fixed it like this:

  1. Go to your google fcm console
  2. Select your app
  3. In the left side menu find settings icon (standard wheel)
  4. Click on it and after click on project settings
  5. Now copy your server key and paste it in php

Voila...

Solution 31 - Firebase

I also getting the same error. i have copied the api_key and change into google_services.json. after that it workig for me

"api_key": [
        {
          "current_key": "********************"
        }
      ],

try this

Solution 32 - Firebase

You will have a server key something like this AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY available in the Settings section of firebase console console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging.

Specify the correct key with your code and try again.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTareK KhouryView Question on Stackoverflow
Solution 1 - FirebaseJinu P CView Answer on Stackoverflow
Solution 2 - FirebaseNauman KhanView Answer on Stackoverflow
Solution 3 - FirebaseRobert ThilleView Answer on Stackoverflow
Solution 4 - FirebaseNepaliDeveloperView Answer on Stackoverflow
Solution 5 - FirebaseLuiz Fernando da SilvaView Answer on Stackoverflow
Solution 6 - FirebaseAbdul RaufView Answer on Stackoverflow
Solution 7 - Firebaseabolfazl bazghandiView Answer on Stackoverflow
Solution 8 - FirebaseWildView Answer on Stackoverflow
Solution 9 - FirebaseFlowraView Answer on Stackoverflow
Solution 10 - FirebaseAbraham MathewView Answer on Stackoverflow
Solution 11 - FirebaseShabir MustafaView Answer on Stackoverflow
Solution 12 - FirebaseAkashView Answer on Stackoverflow
Solution 13 - FirebaseCanerView Answer on Stackoverflow
Solution 14 - FirebasestasionokView Answer on Stackoverflow
Solution 15 - FirebaseDiego SanabriaView Answer on Stackoverflow
Solution 16 - FirebaseKarthikeyan VeView Answer on Stackoverflow
Solution 17 - FirebaseshehzyView Answer on Stackoverflow
Solution 18 - FirebaseMohamed AbdelraZekView Answer on Stackoverflow
Solution 19 - FirebaseEliView Answer on Stackoverflow
Solution 20 - FirebaseShivam SihareView Answer on Stackoverflow
Solution 21 - FirebasePabloView Answer on Stackoverflow
Solution 22 - Firebasej2emanueView Answer on Stackoverflow
Solution 23 - FirebaseceweView Answer on Stackoverflow
Solution 24 - FirebasedkeloskyView Answer on Stackoverflow
Solution 25 - FirebaseMartLavView Answer on Stackoverflow
Solution 26 - FirebaseWilliam DesportesView Answer on Stackoverflow
Solution 27 - FirebaseMihail VarbanovView Answer on Stackoverflow
Solution 28 - FirebaseIwan RossView Answer on Stackoverflow
Solution 29 - FirebaseMrunal DholeView Answer on Stackoverflow
Solution 30 - FirebaseV. SamborView Answer on Stackoverflow
Solution 31 - FirebaseKarthik SridharanView Answer on Stackoverflow
Solution 32 - FirebaseHareeshView Answer on Stackoverflow