2016-06-16 3 views
1

Je suis en train de me familiariser avec les nouveaux produits Firebase et j'espère que certains experts de Firebase pourront valider mon approche. Je voudrais utiliser Firebase Cloud Messaging pour envoyer des notifications push à des sous-groupes (individus & groupes) des utilisateurs de mon application. Fondamentalement, je veux également stocker certaines informations contre l'utilisateur de chaque utilisateur en même temps (dans la base de données en temps réel). Mon noeud /users ressemblera à quelque chose comme ceci:Firebase envoie FCM ET stocke des données contre uid dans la base de données en temps réel

/users 
    -uid (the unique id created by Firebase) 
     -firstname 
     - ... 
     - msgHistory 
      -msgId 
       -date 
       -text 
       -... 

Je dois mettre à jour le msgHistory de tous les utilisateurs cibles qu'ils ont opté pour pousser des messages ou non. Alors, l'approche suivante est-elle logique?

  1. créer ma propre liste des uid cibles est pour chaque groupe d'utilisateurs (je suppose que je ne peux pas utiliser des sujets parce que je veux cibler les utilisateurs qui n'ont pas choisi dans les notifications push trop?)

puis quand je veux envoyer un message à ce groupe,

  1. défiler chacun de mettre à jour leur noeud msgHistory l'uid et ...
  2. envoyer une notification push si l'utilisateur a permis

Hypothèses:

  • Tous les utilisateurs seront authentifiés (E-mail, Google & Facebook)
  • A ce stade, je suis seulement préoccupé par les appareils iOS
+0

Je ne suis pas tout à fait certain de votre mécanisme de regroupement, mais à part cela ce que vous » re description semble en effet une approche commune. Les sujets sonnent comme une approche valable ici aussi. Appelez simplement ['subscribeToTopic()'] (https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging.html#public-methods) lorsque les conditions de votre application ont été remplies. –

+0

@FrankvanPuffelen merci pour le commentaire et le lien vers la méthode. En termes de «stratégie de regroupement», mon application est essentiellement un répertoire d'entreprises, de sorte que les utilisateurs seront regroupés (ciblés) par zone géographique, leur intérêt pour les catégories ou leur intérêt pour des entreprises individuelles. Je peux voir comment cela se prête aux sujets, mais ma question est de savoir si les abonnements Topic peuvent être utilisés pour identifier les abonnés afin que je puisse stocker des données (par exemple msgHistory dans mon exemple) sur le nœud de l'utilisateur. Mon hypothèse est que je dois stocker un enregistrement des abonnements sur le nœud de l'utilisateur (ou dans le nœud/abonnés de l'uid) pour le faire. Avoir du sens? – James

+0

Il n'est pas nécessaire de gérer les rubriques auxquelles l'utilisateur s'est abonné, une fois qu'il a satisfait à une exigence et qu'il ne les désinscrit pas. Ensuite, vous pouvez simplement envoyer aux sujets et seulement les utilisateurs qui sont abonnés recevront les messages. Vous pouvez mapper des sujets inscrits sur des utilisateurs pour d'autres raisons, mais pour l'envoi de messages, cela n'est pas obligatoire. –

Répondre

0

Ses très bons approche. J'ai créé même application de messagerie pour Android en utilisant la FCM et login facebook et son travail comme pro: vérifier mon format de données (JSON)

{ 
    "chat" : { 
    "[email protected]@gmail-com" : { 
     "-KN8QNQeARA3T5esXvn2" : { 
     "message" : "hi doggy how are you?", 
     "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2", 
     "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3" 
     }, 
     "-KN8QSDUfGJwaao33nkd" : { 
     "message" : "I am fine ...n you?", 
     "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3", 
     "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2" 
     }, 
     "-KN8QV1tuY5imq11EyhY" : { 
     "message" : "me too", 
     "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2", 
     "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3" 
     }, 
     "-KN8QaYfdXmKuceLqdkP" : { 
     "message" : "missing you\uD83D\uDE25", 
     "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2", 
     "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3" 
     }, 
     "-KN8Qd1PK_iFfKD6w8gL" : { 
     "message" : "ohhhhh\uD83D\uDE0A", 
     "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3", 
     "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2" 
     }, 
     "-KN8Ql8-ONrsL3TdWfFO" : { 
     "message" : "\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82happy birthday", 
     "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3", 
     "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2" 
     }, 
     "-KN8QwIt0x08O-_Y4Sc5" : { 
     "message" : "Thank you dear\uD83D\uDE18", 
     "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2", 
     "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3" 
     }, 
     "-KN8R5jX9ZKiFBpGhFd2" : { 
     "message" : "\uD83D\uDE03", 
     "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2", 
     "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3" 
     } 
    } 
    }, 
    "users" : { 
    "JY6HQlltFCUqps3YDzGYLat7YLC3" : { 
     "avatarId" : 1, 
     "connection" : "offline", 
     "createdAt" : "1469036893226", 
     "firstName" : "Doggies Home", 
     "userEmail" : "[email protected]" 
    }, 
    "utb0d5LBQ0VOs8R0V3qJmNxeT9t2" : { 
     "avatarId" : 1, 
     "connection" : "offline", 
     "createdAt" : "1469036965579", 
     "firstName" : "Mobiliya AR", 
     "userEmail" : "[email protected]" 
    } 
    } 
}