0

Je travaille sur une application, une application de scores en direct qui permettent aux utilisateurs de s'abonner à leurs équipes préférées, en utilisant les abonnements de sujets FCM, j'ai besoin d'aide pour la livraison des notifications à ces utilisateurs.Firebase Live score notifications push en utilisant fcm

En ce moment je peux envoyer des notifications régulières aux appareils, je peux envoyer des notifications manuellement via console, admin node.js, rest api, même pour les sujets d'abonnement que les utilisateurs s'abonnent, je peux aussi lister les abonnements d'un enregistrement spécifique id.

Alors ... Mes sujets que les utilisateurs s'abonnent sont des ids d'équipe (équipes de football), ce que je veux faire est de notifier les utilisateurs qui s'abonnent à un sujet spécifique , mi-temps, deuxième mi-temps, jeux terminés) c'est un cas d'utilisation très courant pour un système de notifications push.

je stocke mes jeux de données dans la base de données firebase, je l'obtenir d'un fournisseur externe et est mis à jour en « temps réel » et ressemble à:

{ 
     "AwayTeamShort": "ANZ", 
     "League": "Russian Premier League", 
     "comp_id": "1457", 
     "events": [ 
      { 
       "assist": "G. Gabulov", 
       "assist_id": "29779", 
       "extra_min": "", 
       "id": "23177131", 
       "minute": "46", 
       "player": "M. Kazankov", 
       "player_id": "113277", 
       "result": "", 
       "team": "localteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "", 
       "assist_id": "", 
       "extra_min": "", 
       "id": "23177132", 
       "minute": "57", 
       "player": "I. Yediev", 
       "player_id": "", 
       "result": "", 
       "team": "localteam", 
       "type": "yellowcard" 
      }, 
      { 
       "assist": "K. Bazelyuk", 
       "assist_id": "269373", 
       "extra_min": "", 
       "id": "23177133", 
       "minute": "57", 
       "player": "A. Katsaev", 
       "player_id": "92363", 
       "result": "", 
       "team": "visitorteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "J. Lipartia", 
       "assist_id": "41506", 
       "extra_min": "", 
       "id": "23177134", 
       "minute": "58", 
       "player": "K. Mamtov", 
       "player_id": "29851", 
       "result": "", 
       "team": "visitorteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "E. Balyajkin", 
       "assist_id": "6770", 
       "extra_min": "", 
       "id": "23177135", 
       "minute": "67", 
       "player": "N. Kalinski", 
       "player_id": "", 
       "result": "", 
       "team": "localteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "R. Koryan", 
       "assist_id": "123728", 
       "extra_min": "", 
       "id": "23177136", 
       "minute": "68", 
       "player": "M. Markovic", 
       "player_id": "139251", 
       "result": "[1-0]", 
       "team": "localteam", 
       "type": "goal" 
      }, 
      { 
       "assist": "P. Yakovlev", 
       "assist_id": "82061", 
       "extra_min": "", 
       "id": "23177137", 
       "minute": "71", 
       "player": "P. Dolgov", 
       "player_id": "309265", 
       "result": "", 
       "team": "visitorteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "R. Koryan", 
       "assist_id": "123728", 
       "extra_min": "", 
       "id": "23177138", 
       "minute": "72", 
       "player": "V. Nikiforov", 
       "player_id": "26213", 
       "result": "", 
       "team": "localteam", 
       "type": "subst" 
      }, 
      { 
       "assist": "", 
       "assist_id": "", 
       "extra_min": "", 
       "id": "23177139", 
       "minute": "89", 
       "player": "A. Dovbnya", 
       "player_id": "123582", 
       "result": "", 
       "team": "localteam", 
       "type": "yellowcard" 
      }, 
      { 
       "assist": "", 
       "assist_id": "", 
       "extra_min": "2", 
       "id": "231771310", 
       "minute": "90", 
       "player": "T. Phibel", 
       "player_id": "58795", 
       "result": "", 
       "team": "visitorteam", 
       "type": "yellowcard" 
      }, 
      { 
       "assist": "", 
       "assist_id": "", 
       "extra_min": "2", 
       "id": "231771311", 
       "minute": "90", 
       "player": "S. Bryzgalov", 
       "player_id": "122214", 
       "result": "", 
       "team": "visitorteam", 
       "type": "yellowcard" 
      }, 
      { 
       "assist": "V. Nikiforov", 
       "assist_id": "26213", 
       "extra_min": "5", 
       "id": "231771312", 
       "minute": "90", 
       "player": "N. Kalinski", 
       "player_id": "", 
       "result": "[2-0]", 
       "team": "localteam", 
       "type": "goal" 
      } 
     ], 
     "formatted_date": "08.08.2017", 
     "ft_score": "[2-0]", 
     "ht_score": "[0-0]", 
     "id": "2211727", 
     "localteam_id": "14810", 
     "localteam_name": "SKA Khabarovsk", 
     "localteam_score": "2", 
     "region": "Russia", 
     "season": "2017/2018", 
     "status": "FT", 
     "time": "08:00”, 
     "venue": "Stadion imeni V.I. Lenina (Khabarovsk)", 
     "venue_city": "Khabarovsk", 
     "venue_id": "88600", 
     "visitorteam_id": "14786", 
     "visitorteam_name": "FK Anzi Makhackala", 
     "visitorteam_score": "0", 
     "week": "5" 
    } 

Les utilisateurs sont abonnés à l'équipe id dans le JSON au-dessus des identifiants d'équipe sont visitorteam_id, localteam_id, ces identifiants sont toujours les mêmes pour cette équipe peu importe si elle est visitée ou locale.

Mes abonnements sur instance ID API ressemble à (je puis le stocker dans le db, mais n'a pas d'importance pour cette question):

{ 
    "application":"com.iid.example", 
    "authorizedEntity":"123456782354", 
    "platform":"Android", 
    "attestStatus":"ROOTED", 
    "appSigner":"1a2bc3d4e5", 
    "connectionType":"WIFI", 
    "connectDate":"2017-08-07 
    "rel":{ 
    "topics":{ 
     "42332":{"addDate":"2017-08-07"}, 
     "14810":{"addDate":"2017-08-07"}, 
     "14786":{"addDate":"2017-08-07"} 

    } 
    } 
} 

Alors ... Comment puis-je informer les appareils qui souscrivent à un sujet particulier (identifiant de l'équipe) sur les objectifs dans les jeux auxquels l'équipe à laquelle ils sont abonnés joue?

Ps: Je sais que probablement la solution est complexe, mais toute l'aide, des exemples seront les bienvenus

Répondre

0

Essayez d'utiliser une fonction Cloud Firebase. https://firebase.google.com/docs/functions/use-cases

Vous pouvez créer une fonction Firebase Cloud qui "s'abonne" aux modifications, puis déclenche automatiquement la notification push.

+0

Salut Javi, comme je le dis je peux m'abonner aux sujets et obtenir notif pour les changements dans le DB ma question est plus sur l'approche de travailler avec mon json et "connecter" cela à un sujet spécifique, par exemple: –