2016-06-16 28 views
30

Ho un'applicazione che utilizza Google FCM per l'invio di notifiche push.FCM getting MismatchSenderId

Quando invio una notifica push a un gruppo di utenti, ottengo una risposta di MismatchSenderId per alcuni di essi. Anche se tutti gli utenti hanno la stessa identica applicazione. In che modo alcuni utenti ottengono una risposta positiva e altri ottengono un MismatchSenderId?

Ho studiato molto e mi sono assicurato di aver aggiunto tutti i prerequisiti richiesti da FCM.

Qualche suggerimento?

EDIT:

risposta del campione:

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

EDIT 2:

Ecco il codice di invio lato server (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:

Sembra che il problema sia stato risolto con gli aggiornamenti dell'SDK. Sto usando l'ultimo com.google.firebase:firebase-messaging:9.6.1, non ho più "MismatchSenderId".

+1

MismatchSenderId significa che il client si sta registrando con un server diverso da quello che si sta utilizzando per l'invio. Tutti i tuoi clienti si stanno registrando con lo stesso progetto? Potresti includere anche la risposta MismatchSenderId nella domanda? –

+0

Sì, stesso progetto, stessa applicazione, stessa chiave del server. –

+0

Puoi mostrare il codice di come hai inviato questo messaggio? Potrei sapere la causa del problema .. – AnZ

risposta

-1

Avrete una chiave del server qualcosa come questo AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY disponibile nelle Impostazioni sezione della console Firebase console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging.

Specificare la chiave corretta con il codice e riprovare.

+6

Sto usando la chiave del server corretta. Se non lo fossi, otterrei "MismatchSenderId" per tutte le richieste e non per "alcuni di loro" come menzionato in questione. –

0

Ho avuto lo stesso problema, e mi è stato risolto in questo modo:

  1. Vai al tuo Google console FCM
  2. Seleziona l'app
  3. Nel menu laterale sinistro trovare le impostazioni di icona (ruota di serie)
  4. Clicca su di esso e dopo click sul progetto Opzioni
  5. Ora copiare la chiave del server e incollarlo in php

Voila ...

2

Assicurarsi di rimuovere tutto il codice Parse dall'app (librerie, ricevitori in AndroidManifest, ecc.). Ho trovato che le notifiche push intermittenti non funzionavano. Dalle mie osservazioni, avrebbe funzionato su nuove installazioni ma non sugli aggiornamenti delle app dal play store.

Credo che qualcosa di interno a Parse fosse in conflitto con FCM (Parse usa GCM, quindi suppongo che abbia a che fare con l'utilizzo simultaneo di GCM e FCM). Non appena ho strappato tutti i ricevitori e le librerie Parse, le cose hanno funzionato alla grande.

-2

Ho anche ricevuto lo stesso errore. ho copiato il api_key e cambiato in google_services.json.dopo che workig per me

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

provare questo

2

ciò che funziona per me:
ho trovato che la SenderID è diverso dal numero di progetto nella console FCM
Google- così ho ri-scaricato services.json e tutto funziona bene

3

Ho avuto lo stesso problema. Dopo ore di spesa per capirlo, ho trovato questa soluzione:

  • prima verifico chiave del server è corretto o non era corretto che è come AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Poi controllo ID mittente come 79XXXXXXXX è stato anche corretto .
  • Il problema principale era ID_ID (UDID) a cui devo inviare una notifica. In realtà DeviceId abbiamo ottenuto su Android in FCM è diverso da GCM. Non è possibile utilizzare GCM creato DeviceId in FCM.

Spero che questo ti possa aiutare. Grazie

+0

Mi hai aiutato molto. Ho dovuto chiedere allo sviluppatore dell'app di includere l'id del mittente sul codice, quindi il mio KEY dell'API FCM ha funzionato. Grazie molto. –

+0

Benvenuto, mi fa piacere che ti aiuti. –

15

Firebase ha aggiornato le proprie chiavi del server alla nuova versione. Usa nuove chiavi invece di una vecchia.

andare in Impostazioni-> progetto Impostazioni-> scheda di messaggistica cloud

enter image description here

Forse funzionerà

0

controllo gcm_sender_id in manifest.json Se non corrispondente - corretto , ma è necessario creare nuovi abbonati per il nuovo ID mittente. Esiste una rottura degli abbonati.

0

Aggiornamento di inizializzazione Firebase funziona per 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> 
0

Come per risposta "MismatchSenderId", si tratta di una mancata corrispondenza tra Firebase e il vostro locale "google-services.json", è necessario fare in modo che sia mostra corrispondenze

Nella console FireBase vai a "YourProject> Project OverView> Cloud Messaging" vedrai il "SenderID" che DEVE corrispondere con "google-services.json" nel tuo progetto Android.

La cosa migliore che puoi fare è scaricare il file json finale dalla scheda "Generale" e posizionarlo nel tuo progetto.