Firebase推送通知功能主题名称

时间:2020-01-18 17:55:43

标签: javascript firebase google-cloud-functions

我正在尝试在javascript中配置index.js文件,以用于Firebase iOS的推送通知。这是我有问题的代码:

exports.newsFRA = functions.database
.ref('news/FRA/{uid}')
.onCreate((snapshot, context) => {
  let newsItemFRA = snapshot.val()
  sendNotificationFRA(newsItemFRA)
})

function sendNotificationFRA(newsItemFRA) {
  let title = newsItemFRA.title
  let message = newsItemFRA.message

  let payload = {
    notification: {
      title: 'FRA News',
      body: title,
      sound: 'default'
    }
  }

  console.log(payload)
  let topic = 'FRA'

  admin.messaging().sendToTopic(topic, payload)

}

exports.newsLHR = functions.database
.ref('news/LHR/{uid}')
.onCreate((snapshot, context) => {
  let newsItemLHR = snapshot.val()
  sendNotificationLHR(newsItemLHR)
})

function sendNotificationLHR(newsItemLHR) {
  let title = newsItemLHR.title
  let message = newsItemLHR.message

  let payload = {
    notification: {
      title: 'LHR News',
      body: title,
      sound: 'default'
    }
  }

  console.log(payload)
  let topic = 'LHR'

  admin.messaging().sendToTopic(topic, payload)

}

两个功能相同,主题和匹配名称是什么变化。我有21个相同的。 我相信,通过在Firebase中检测经过身份验证的当前用户子级(称为“ base”)的内容,并使用值(FRA,CDG,ORD等)定义主题,可以找到一种更好的方法。因此,我不必为每个可用基重复相同的功能。 希望我不要太困惑,我非常感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用多个通配符,并使用参数的值来确定要执行的操作。例如,这是有效的:

exports.news = functions.database
.ref('news/{x}/{uid}')
.onCreate((snapshot, context) => {
  const x = context.params.x
  let newsItem = snapshot.val()
  sendNotification(x, newsItem)
})