我正在开发一个应用程序,一个实时评分应用程序,允许用户订阅他们最喜欢的团队,使用FCM主题订阅,我需要帮助来向该用户发送通知。
现在我可以定期向设备发送通知,我可以通过控制台,管理node.js,rest api手动发送通知,甚至对于用户订阅的订阅主题,我也可以列出特定注册id的订阅。
所以..。我的用户订阅的主题是球队ids (足球队),我想做的是当一些游戏事件发生时通知订阅特定主题的用户,例如,目标,游戏状态(比赛开始,中场休息,下半场开始,比赛结束)这是推送通知系统的一个非常常见的用例。
我将我的游戏数据存储在firebase数据库中,我从外部提供商那里获得它,并“实时”更新,如下所示:
{
"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"
}用户在上面的json中订阅团队id,团队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:我知道解决方案可能很复杂,但欢迎大家提供帮助,举例说明
发布于 2017-09-18 19:04:01
尝试使用Firebase云函数。https://firebase.google.com/docs/functions/use-cases
您可以创建一个Firebase Cloud函数来“订阅”更改,然后自动触发推送通知。
https://stackoverflow.com/questions/46277381
复制相似问题