0

我正在开发一款应用程序,一款允许用户使用FCM主题订阅订阅其最喜爱的团队的实时分数应用程序,我需要帮助才能将通知传递给该用户。使用fcm的Firebase Live分数推送通知

现在我可以定期发送通知到设备,我可以通过控制台,管理员node.js中,REST API手动发送通知,即使对于用户订阅订阅话题,我还可以列出一个具体登记订阅ID。

所以...我的用户订阅的主题是团队id(橄榄球队),我想要做的是通知用户订阅某个特定主题,当一些游戏事件发生像目标,游戏状态(游戏开始,半场时间,下半场比赛开始,比赛结束),这是推送通知系统的一个非常常见的用例。

我存储在火力数据库我的游戏数据,我从外部供应商把它和“实时”更新,看起来像:

{ 
     "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" 
    } 

的用户订阅球队ID在JSON在团队id上面是visitorteam_id,localteam_id,这些ID总是相同的,如果是访问者或本地团队,则该团队无关紧要。在实例

我的订阅ID API的样子(我然后将其存储在数据库中,但不要紧,这个问题):

{ 
    "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"} 

    } 
    } 
} 

所以...我怎么能通知订阅设备一个特定的话题(团队id)关于他们认购的团队在玩游戏的目标?

PS:我知道大概的解决方案是复杂的,但每一个帮助,实例会受到欢迎

回答

0

尝试使用火力地堡云功能。 https://firebase.google.com/docs/functions/use-cases

您可以创建一个“订阅”更改并自动触发推送通知的Firebase云端功能。

+0

嗨Javi,就像我提到的,我可以订阅主题并获取数据库中的更改通知我的问题更多地是关于使用我的json和“连接”到特定主题的方法,例如: –