【问题标题】:Firebase : Send notification with REST APIFirebase:使用 REST API 发送通知
【发布时间】:2016-09-26 05:10:16
【问题描述】:

是否可以在 Firebase 上使用 REST API 发送推送通知?我可以使用 Firebase 控制台发送通知,但我需要使用 REST API 发送通知。

【问题讨论】:

  • 仅支持从 Firebase 控制台发送 Firebase 通知。但是您可以通过使用 Firebase Cloud Messaging 来实现相同的目的,它有一个您可以调用的 API(并且是 Firebase 通知的构建基础)。
  • 阅读 - 如何从 REST 客户端发送 Firebase 推送通知。developine.com/…

标签: android rest push-notification firebase


【解决方案1】:

只是为了帮助,

如果有人想使用 REST POST API,这里是,使用 Postman 配置如下

网址:
https://fcm.googleapis.com/fcm/send

标题:

"Content-Type": "application/json",
"Authorization": "key=<Server_key>"

身体:

{
    "to": "<Device FCM token>",
    "notification": {
      "title": "Check this Mobile (title)",
      "body": "Rich Notification testing (body)",
      "mutable_content": true,
      "sound": "Tri-tone"
      },

   "data": {
    "url": "<url of media image>",
    "dl": "<deeplink action on tap of notification>"
      }
}

就是这样。谢谢!!!

如果你想了解更多关于FCM富通知的细节,可以查看我在Medium上的文章Rich Push Notification with Firebase Cloud Messaging (FCM) and Pusher on iOS platform

【讨论】:

  • 如何管理这个设备 FCM 令牌?就我而言,我想在每次登录时将其存储在 mongo db 中。还好吗?
  • @SumanthVarada 您可以使用任何数据库来保存 fcm 令牌,甚至是 Firebase 数据库。 fcm 令牌派生自设备令牌,由 APNS 在注册远程通知时发送,该令牌在您删除应用程序并安装新的应用程序之前是不变的。您可以在登录时进行本地检查 fcm_token 是否更改?如果发生更改,则调用服务器进行更新,否则无需再次更新相同的信息。
  • @KakiMasterOfTime 用于 iOS 中的丰富通知,人们已经向 Firebase 报告,但 Firebase 控制台尚未提供该功能。(github.com/firebase/quickstart-ios/issues/…) 同意你的看法。也许将来 Firebase 会足够聪明地完成所有这些工作?
  • @AshisLaha 非常感谢!我查看了 Firebase 文档,只需要一个示例。你成就了我的一天
【解决方案2】:

这可能会有所帮助 - https://firebase.google.com/docs/cloud-messaging/http-server-ref 您可以在此处找到示例消息 - https://firebase.google.com/docs/cloud-messaging/downstream

您可以从 Firebase 控制台获取服务器密钥,作为您在 http 标头中的“云消息传递”选项卡中放入的授权。

【讨论】:

【解决方案3】:

我使用下面的 REST API 来发送通知。

curl -X POST \
  https://fcm.googleapis.com/fcm/send \
  -H 'Authorization: key=AAAAG-oB4hk:APA91bFUilE6XqGzlqtr-M-LRl1JisWgEaSDfMZfHuJq3fs7IuvwhjoGM50i0YgU_qayJA8FKk15Uvkuo7SQtQlVt4qdcrrhvnfZyk_8zRGAskzalFUjr2nA2P_2QYNTfK6X8GbY0rni' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: c8af5355-dbf2-4762-9b37-a6b89484cf07' \
  -H 'cache-control: no-cache' \
  -d '{
    "to": "ey_Bl_xs-8o:APA91bERoA5mXVfkzvV6I1I8r1rDXzPjq610twte8SUpsKyCuiz3itcIBgJ7MyGRkjmymhfsceYDV9Ck-__ObFbf0Guy-P_Pa5110vS0Z6cXBH2ThnnPVCg-img4lAEDfRE5I9gd849d",
    "data":{
        "body":"Test Notification !!!",
        "title":"Test Title !!!"
    }

}'

授权:key=AAAAG-oB4hk:APA91bFUilE6XqGzlqtr-M-LRl1JisWgEaSDfMZfHuJq3fs7IuvwhjoGM50i0YgU_qayJA8FKk15Uvkuo7SQtQlVt4qdcrrhvnfZyk_8zRGAskzalFUjr2nA2Gb0P_2QYNTpf>

其中密钥是控制台中的 web_server_key,您需要指定您将从应用程序中获得的唯一注册密钥。

以强>”: “ey_Bl_xs-80:APA91bERoA5mXVfkzvV6I1I8r1rDXzPjq610twte8SUpsKyCuiz3itcIBgJ7MyGRkjmymhfsceYDV9Ck -__ ObFbf0Guy-P_Pa5110vS0Z6cXBH2ThnnPVCg-img4lAEDfRE5I9gd849d” 是从设备令牌的FCM注册。请参考以下链接。

https://firebase.google.com/docs/cloud-messaging/android/client?authuser=0

【讨论】:

  • 至少在 iOS 上,“数据”键应该是“通知”才能显示出来。 “数据”键用于自定义数据,如果没有“通知”键,我在测试时看不到通知。
【解决方案4】:

使用 ARC 向 Firebase 控制台发送请求以发送通知

您可以使用ARC OR Postman 或您自己的服务器 来发送通知。 您需要从控制台收集您的 web_server_key,并且您需要指定在调用 onRefreshToken() 方法时将从应用程序获取的唯一注册密钥。

您需要使用 Content-Type : jsonAuthorization: web_server_key 将请求发送到https://fcm.googleapis.com/fcm/send。 On 重视用户您的 app_registration_token 。

【讨论】:

  • 我想向所有客户发送通知。那么“to”值是什么
  • 然后你需要创建一个主题。您可以从您的 java 代码创建或订阅主题。订阅此特定主题的用户可以收到通知。如果您想向所有用户发送通知,请创建一个主题并从您的 java 代码中订阅它。参考 - firebase.google.com/docs/notifications/android/console-topics
【解决方案5】:

我们使用以下documentation 从网络客户端发送通知。

有一种通过 Chrome 应用或扩展程序发送通知的简单方法。

function sendMessage() {
  var message = {
    messageId: getMessageId(),
    destinationId: senderId + "@gcm.googleapis.com",
    timeToLive: 86400,    // 1 day
    data: {
      "key1": "value1",
      "key2": "value2"
    }
  };
  chrome.gcm.send(message, function(messageId) {
    if (chrome.runtime.lastError) {
      // Some error occurred. Fail gracefully or try to send
      // again.
      return;
    }

【讨论】:

    【解决方案6】:

    试试这个,

    网址 - https://fcm.googleapis.com/fcm/send

    方法 - 发布

    标题

    • 授权 -> key= 服务器密钥,您可以从控制台获取它
    • 内容类型-> 应用程序/json

    身体

    {
     "to" : "FCM Token goes here",
     "notification" : {
         "body" : "New Lesson Added 1",
         "title": "Lokesh"
     }
    }
    

    【讨论】:

      【解决方案7】:

      对于 c# 应用程序(Xamarin.Forms 等),您只需复制以下代码:

       public async static void SendPushToTokenID(string tokenID, string title, string body)
              {
      
                  HttpClient client = new HttpClient();
                  client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
      
                  var url = serverURL;
                  client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + serverKey);
      
      
                  var notification = new
                  {
                      title = title,
                      body = body
      
                  };
      
                  var postModel = new
                  {
                      to = tokenID,
                      notification = notification
      
                  };
      
      
                  var response = await client.PostAsJsonAsync(url, postModel);
      
                  // format result json into object 
                  string content = await response.Content.ReadAsStringAsync();
                  string xw = (response.Content.ReadAsStringAsync().Result);
      
              }
      

      用于网址:https://fcm.googleapis.com/fcm/send 对于您的服务器密钥,请使用您的 firebase 服务器密钥。这就是全部。只是不要忘记将设备令牌 ID 存储在您的服务器上,然后您就可以全天免费向个人用户发送消息。非常简单。

      【讨论】:

        猜你喜欢
        • 2021-08-17
        • 1970-01-01
        • 1970-01-01
        • 2021-02-28
        • 2018-12-31
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-17
        相关资源
        最近更新 更多