创建组通知firebase功能

时间:2017-05-20 13:35:30

标签: firebase google-cloud-functions firebase-notifications

我试图在每次新用户创建他的帐户时创建一个关于firebase功能的组通知,但我无法理解我必须在{{3上写下这个Http post请求的位置}}

https://android.googleapis.com/gcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["4", "8", "15", "16", "23", "42"]
}

2 个答案:

答案 0 :(得分:1)

您必须合并Cloud Functions for Firebase文档中的两个示例。首先是Notify users when something interesting happens,它显示了在更改数据库时如何向用户发送FCM消息。但是,由于您希望在用户注册时发送消息,因此您需要将其与Send a welcome email when a user completes signup结合使用,以显示用户注册时如何触发。

如果您在完成这些工作时遇到问题,请分享minimal code that reproduces where you are stuck

答案 1 :(得分:0)

评论中给出的答案基本上是没有答案的,我认为关于此(非常必要)主题的官方文档非常薄弱。考虑到许多用户拥有多个设备这一事实,令我感到惊讶的是,FCM / Cloud Function集成尚未解决Cloud Functions中FCM API中的组消息传递(您目前可以发送至,但不能管理设备组)。这让我头疼了一天(我不喜欢JS / TS),所以我将介绍其他任何人在遇到相同问题时所需要的一般概念。当您遇到下面提到的某些陷阱时,这是一个好问题。

要使用旧版API,您需要使用HTTP客户端软件包,您可以install from npm。由于某些原因,我建议使用request-promise-native (henceforth I'll refer to as 'rpn')。首先,如果您打算将在响应中收到的信息保存在Firestore上(您可能会这样做),那么您将希望全面实施Promise,因为Firestore会给您提供Promise,并且您需要确保您的功能按预期运行。标准请求包使用严格的回调-这是我最头痛的事情,因为我最初尝试在写入Firestore后嵌套嵌套以诺言结尾的回调。您可以将标准请求包中的这些回调转换为Promise,但是为什么什么时候才可以使用rpn?其次,我选择rpn而不是axios,因为我在另一个SO线程上读取了axios不喜欢在云功能上工作的内容,因此我避免了所有这些。还有其他软件包,但rpn足够简单易用。使用最新的NodeJS 8.0框架的async / await关键字,rpn包也很好用,这是我在以下示例中使用的关键字。

现在...一些代码呢?这是用TS编写的,但对于JS应该相对相同。首先,创建包含所需的所有选项的对象,然后等待响应。一旦知道您确实需要使用带有承诺的HTTP包,它就非常简单明了。

const postOptions = {
      uri: "https://fcm.googleapis.com/fcm/notification",
      method: 'POST',
      headers: {  
        "Content-Type": "application/json",
        "Authorization" : fcmServerKey,
        "project_id" : senderID
      },
      json: {
        "operation": 'create',
        "notification_key_name": userID,
        "registration_ids": [token]
        }
    }

    const postResponse = await request(postOptions)
    const theKey : String = postResponse['notification_key'];
//now do something with the key