8
votes

Comment mettre plusieurs identifiants de Project_Number / Sender dans Google-Services.json

Je veux pouvoir ajouter plus d'un identifiant d'expéditeur dans mon application Android.

de https://developers.google.com/cloud-messaging/concept-Options

GCM permet à plusieurs parties d'envoyer des messages à la même application client. Par exemple, supposons que l'application cliente soit un agrégateur d'articles avec plusieurs contributeurs, et chacun d'entre eux devrait être en mesure d'envoyer un message lorsqu'il publiera un nouvel article. Ce message peut contenir une URL de sorte que l'application client puisse télécharger l'article. Au lieu de devoir centraliser toute activité d'envoi à un seul endroit, GCM vous permet de laisser chacun de ces contributeurs envoyer ses propres messages.

Comment cela est-il obtenu en utilisant Google-Services.json fichier de configuration?


6 commentaires

Je répondrai à votre commentaire ici. Depuis longtemps, les chaînes de commentaire obtiendraient votre message supprimé. Vas-y. FCM est facile à configurer. Acclamations!


Comment était-ce @zyooo? Avez-vous pu essayer de l'essayer? :)


@Intj j'ai essayé votre méthode, mais a obtenu une exception 06-23 21: 24: 07.009 7149-8358 / com.google.firebase.QuickStart.fcm D / FirebaseStuceAd: Échec de la synchronisation: Invalid_sender, Réessayer dans 80s 06-23 21: 24: 51.959 7149-7149 / com.google.firebase.QuickStart.fcm D / MainActivity: Jeton d'instanceID: NULL


Vous avez travaillé, il y avait un espace ici "projet_number": "487xxx, 102xxx" mais après le retrait, le jeton n'est pas null. J'accepterai votre réponse et écrivez un ajout (en utilisant GCM) après cela.


C'est génial. :) bonne question btw. Acclamations! :RÉ


Salut. Passait juste à travers des anciens postes de GCM et espérait si vous pouvez accepter ma réponse ou mettre dans une autre réponse qui résolvait votre message, de sorte qu'il sera correctement étiqueté comme déjà répondu. Acclamations!


4 Réponses :


7
votes

MISE À JOUR: Allez faire référence à la manière officielle et recommandée dans le faisant cela au lieu de l'approche Hacky et non officielle pour empêcher / éviter les problèmes inconnus. De ma réponse ici .

Il y a en fait une partie dans le Documentation à propos de ce sujet:

Recevoir des messages de plusieurs expéditeurs

FCM permet à plusieurs parties d'envoyer des messages à la même application client. Par exemple, supposons que l'application cliente soit un agrégateur d'articles avec plusieurs contributeurs, et chacun d'entre eux devrait être en mesure d'envoyer un message lorsqu'il publiera un nouvel article. Ce message peut contenir une URL de sorte que l'application client puisse télécharger l'article. Au lieu de devoir centraliser toute activité d'envoi à un seul endroit, la FCM vous permet de laisser chacun de ces contributeurs envoyer ses propres messages.

Pour rendre cela possible, assurez-vous que chaque expéditeur génère son propre expéditeur Id . Voir la documentation client pour votre plate-forme pour obtenir des informations sur la procédure d'obtention de l'identifiant de l'expéditeur FCM. Lors de la demande d'enregistrement, l'application client récupère le jeton plusieurs fois, chaque fois avec un identifiant d'expéditeur différent dans le champ d'audience.

Enfin, partagez le jeton d'enregistrement avec les serveurs d'applications correspondants (pour compléter la poignée de main du client / serveur d'enregistrement FCM), et ils pourront envoyer des messages à l'application client à l'aide de leurs propres clés d'authentification.

Notez qu'il existe une limite de 100 émetteurs multiples.

Je pense que la partie confuse mais importante est la suivante:

Lors de la demande d'enregistrement, l'application client récupère le jeton plusieurs fois, chaque fois avec un identifiant d'expéditeur différent dans le champ d'audience.

Dans d'autres termes, vous devrez appeler getTokoken () passer l'identifiant de l'expéditeur et tout simplement " FCM " ( Par exemple, getToken ("2xxxxx3344", "fcm") ) comme paramètres. Vous devrez vous assurer que vous appelez ceci pour chaque expéditeur SENDER (projet) dont vous avez besoin.

Aussi, note du getTokoken () docs:

Ceci est une fonction de blocage, donc ne l'appelez pas sur le fil principal.

Quelques bons à connaître supplémentaires:

  • il ne réessaie pas automatiquement s'il échoue comme celui par défaut.
  • Il renvoie une impression IoException quand elle échoue.

10 commentaires

Donc, cela est fait en utilisant un seul jeton d'enregistrement? Voulez-vous partager le code où vous demandez le jeton?


Ouais. Inscription uniqueToken. Je viens d'utiliser le code du QuickStart que j'ai lié.


Comment envoyez-vous la notification? J'ai eu une défaillance "Id d'expéditeur incompatible"


J'ai envoyé un à travers le Console de Firebase . Sous la notification, alors nouveau message.


Ok, j'ai regardé Firebase Docs, il n'y avait aucune mention d'aucun Google-Services.json . Il semble que Firebase n'utilise pas ce fichier


Ahmm .. ils font. Voici un Capture d'écran de ma console.


Il semble que je doive utiliser FCM. Je vais essayer de faire ça maintenant


Vous avez sauvé ma journée. J'ai essayé beaucoup de choses et aucune n'a travaillé. Celui-ci retourne un jeton que je peux toujours utiliser avec mon ancien projet. Merci


@Lancelot, vous êtes le bienvenu. Notez que ceci est juste une approche hacky et qu'il n'est pas conseillé de modifier le fichier Google-Services.json . Acclamations!


Pour les futurs lecteurs, ma réponse ici explique comment vous configurez plusieurs expéditeurs pour une seule application client en appelant getTokoken ( ) . Acclamations! :)



1
votes

À partir de 2016, il y a une façon très simple et non hacky de le faire, ce qui fonctionne toujours maintenant (juillet 2018). XXX

Source: Le blog officiel de Firebase


0 commentaires

-2
votes

Vous pouvez obtenir le jeton unique pour plusieurs expéditeurs en les transmettant en tant que chaîne séparée des virgules, puis à ce que ces expéditeurs puissent envoyer la notification push à l'aide du jeton commun, essayez d'appeler

FireBaseInstanceD.getinstance () .getTokoken ("Senderid1, Senderid2", Firebasemesging.Instance_id_scope);

Assurez-vous d'appeler ceci à partir d'un fil d'arrière-plan.


0 commentaires

0
votes

La solution Senderid séparée de la virgule des virgules fonctionne toujours et est capable d'enregistrer la même jeton pour 2 expéditeurs différents. J'ai envoyé Push Notif à ce seul jeton magique avec une touche API différente et que vous pouvez recevoir des notifications poussées pour une touche API. J'espère que cela fonctionne au moins jusqu'à la fin de 2020. Parce que j'essaie de faire une transition transparente entre un vieux GCM et des projets FCM qui cible plus d'un million d'utilisateurs. (Entends-moi Google et merci google de ne pas déprécier cette grande solution)

String MagicalToken = FirebaseInstantanceID.getinstance (). GetToken ("Senderid, Anterranidid", "FCM");


0 commentaires