【问题标题】:How to send push notifications without using Firebase console如何在不使用 Firebase 控制台的情况下发送推送通知
【发布时间】:2019-01-26 00:39:56
【问题描述】:

我有一个通过 Firebase 具有消息传递功能的应用。它在应用程序中工作,我有一个 firebase 观察者设置来实时获取新消息。我不知道该怎么做是在那个观察者下触发推送通知。

我已经在我的应用程序中实现了 Firebase 云消息传递,以便我可以向我的控制台发送通知,但是我无法找到适用于 iOS 的资源,或者不只是使用控制台发送单个消息消息。

我知道这是一个广泛的问题,它可能会被标记为“离题”,但如果我能找到更多相关资源,我将不胜感激!

【问题讨论】:

    标签: swift firebase push-notification firebase-cloud-messaging


    【解决方案1】:

    有一个用于使用 Firebase Cloud Messaging 发送消息的 API。我建议您查看FCM server documentation,而不是在这里重复。它基本上采用 HTTP POST 请求的形式,比如这个example from the docs

    POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
    
    Content-Type: application/json
    Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
    
    {
      "message":{
        "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "notification" : {
          "body" : "This is an FCM notification message!",
          "title" : "FCM Message",
          }
       }
    }
    

    要向设备发送消息,您需要指定所谓的 FCM 服务器密钥。顾名思义,此密钥只能在受信任的环境中使用,例如您控制的服务器、您的开发机器或 Cloud Functions for Firebase。原因是拥有您的 FCM 服务器密钥的人可以向您应用的所有用户发送无限量的消息。

    还有一个 Firebase Admin SDK,可以更轻松地调用 FCM 服务器 API 以在其支持的平台上发送消息。有关此选项的更多信息,请参阅FCM Admin SDK documentation。这会将上面的内容变成这样(在 Node.js 上):

    admin.messaging().send({
      "message":{
        "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "notification" : {
          "body" : "This is an FCM notification message!",
          "title" : "FCM Message",
          }
       }
    })
    

    【讨论】:

      【解决方案2】:

      您可以使用 Postman 或类似的方式发送。 您必须向https://fcm.googleapis.com/fcm/send 发出 POST 请求

      设置标题:

      Content-Type: application/json

      Authorization: key=<legacy_server_key or server_key>

      它必须看起来像

      授权:key=AAAAwrVC26k:APA91bHz_ZRBjyoyevnVi0oey8yO_om9av_-YeUq........

      通知正文:

      {
       "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
       "collapse_key" : "type_a",
       "notification" : {
           "body" : "Body of Your Notification",
           "title": "Title of Your Notification"
       },
       "data" : {
           "body" : "Body of Your Notification in Data",
           "title": "Title of Your Notification in Title",
           "key_1" : "Value for key_1",
           "key_2" : "Value for key_2"
       }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 2020-05-10
        • 2016-09-19
        • 2021-05-04
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-03
        • 2023-03-19
        相关资源
        最近更新 更多