6

Desidero poter aggiungere più di un ID mittente nella mia app Android.Come inserire più ID di progetto/ID mittente in google-services.json

Da https://developers.google.com/cloud-messaging/concept-options

GCM consente a più parti per inviare messaggi alla stessa applicazione client. Ad esempio, supponiamo che l'app client sia un aggregatore di articoli con più contributori e ognuno di essi dovrebbe essere in grado di inviare un messaggio quando pubblicano un nuovo articolo. Questo messaggio potrebbe contenere un URL in modo che l'app client possa scaricare l'articolo. Invece di dover centralizzare tutte le attività di invio in un'unica posizione, GCM ti offre la possibilità di consentire a ciascuno di questi collaboratori di inviare i propri messaggi.

Come si ottiene questo risultato utilizzando il file di configurazione google-services.json?

+0

Risponderò al tuo commento qui. Poiché le lunghe catene di commenti avrebbero cancellato il tuo post. Vai avanti. FCM è facile da configurare. Saluti! –

+0

Com'è stato @Zyoo? Eri in grado di risolverlo? :) –

+0

@intj Ho provato il tuo metodo, ma ho ottenuto l'eccezione '06-23 21: 24: 07.009 7149-8358/com.google.firebase.quickstart.fcm D/FirebaseInstanceId: background sync failed: INVALID_SENDER, riprova tra gli 80s'' 06-23 21: 24: 51.959 7149-7149/com.google.firebase.quickstart.fcm D/MainActivity: Tokio InstanceID: null' – Zyoo

risposta

4

AGGIORNAMENTO: Andare a fare riferimento al modo ufficiale e consigliato al posto del hacky e l'approccio non ufficiale per evitare/evitare problemi sconosciuti. Dalla mia risposta here.

V'è in realtà una parte nella documentation su questo argomento:

ricezione di messaggi da più mittenti

FCM consente a più parti di inviare messaggi alla stessa applicazione client. Ad esempio, supponiamo che l'app client sia un aggregatore di articoli con più contributori e che ognuno di essi sia in grado di inviare un messaggio quando pubblicano un nuovo articolo. Questo messaggio potrebbe contenere un URL in modo che l'app client possa scaricare l'articolo. Invece di dover centralizzare tutte le attività di invio in un'unica posizione, FCM ti offre la possibilità di consentire a ciascuno di questi collaboratori di inviare i propri messaggi.

Per rendere ciò possibile, assicurarsi che ciascun mittente generi il proprio sender ID. Consultare la documentazione del client per la propria piattaforma per informazioni su come ottenere l'ID mittente FCM. Quando si richiede la registrazione, l'app client recupera il token più volte, ogni volta con un ID mittente diverso nel campo pubblico.

Infine, condividere il token di registrazione con i server delle applicazioni corrispondenti (per completare l'handshake del client/server di registrazione FCM) e saranno in grado di inviare messaggi all'app client utilizzando le proprie chiavi di autenticazione.

Si noti che esiste un limite di 100 mittenti multipli.

credo che la parte confusa ma importante è:

Quando si richiede la registrazione, l'applicazione client recupera le più volte token, ogni volta con un diverso ID del mittente nel campo pubblico.

In altri termini, si dovrà chiamare getToken() passando il Sender ID e semplicemente "FCM" (ad esempio getToken("2xxxxx3344", "FCM")) come parametri. Dovrai assicurarti di chiamare questo numero per ogni mittente (progetto) di cui hai bisogno.

Inoltre, nota dai documenti getToken():

o funzione di blocco in modo da non chiamare sul filo principale.

Alcuni ulteriore buono-a-sa:

  • Esso non automaticamente riprovare se non riesce, come quella di default.
  • Restituisce IOException quando non riesce.
+0

Quindi, questo viene fatto usando un singolo token di registrazione? Ti dispiace condividere il codice dove richiedi il token? – Zyoo

+0

Sì. Registrazione singolaToken. Ho appena usato il codice dal quickstart che ho collegato. –

+0

Come si invia la notifica? Ho ricevuto l'errore "ID mittente non corrispondente" – Zyoo