Firebase:使用REST API发送通知

qzlgjiam  于 2022-12-14  发布在  其他
关注(0)|答案(8)|浏览(254)

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

nzrxty8p

nzrxty8p1#

只是为了帮忙,
如果有人想使用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

k5hmc34c

k5hmc34c2#

我使用了下面的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是来自控制台的web_server_key,您需要指定将从应用程序获取的唯一注册密钥。

":“ey_Bl_xs-8 o:APA 91 bERoA 5 mXVfkzvV 6 I1 I8 r1 rDXzPjq 610 twte 8 SUpsKyCuiz 3 itcIBgJ 7 MyGRkjmymhfsceYDV 9 Ck-__ObFbf 0 Guy-P_Pa 5110 vS 0 Z6 cXBH 2 ThnnPVCg-img 4lAEDfRE 5I 9 gd 849 d”是来自设备的FCM注册令牌。请参考以下链接。
https://firebase.google.com/docs/cloud-messaging/android/client?authuser=0

vdgimpew

vdgimpew3#

这可能会有所帮助-https://firebase.google.com/docs/cloud-messaging/http-server-ref,您可以在此处找到示例消息-https://firebase.google.com/docs/cloud-messaging/downstream
从Firebase控制台,您可以在"云消息传递“选项卡中获取服务器密钥,作为您放在http标头中的授权。

ulydmbyx

ulydmbyx4#

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

您可以使用ARC或Postman或您自己的服务器发送通知。您需要从控制台收集您的web_server_key,并且需要指定调用onRefreshToken()方法时将从应用程序获取的唯一注册密钥。
您需要将请求发送到https://fcm.googleapis.com/fcm/send内容类型:json授权:web_server_key.在应用注册令牌的收件人值用户上。

z9smfwbn

z9smfwbn5#

试试这个
网址- * https://fcm.googleapis.com/fcm/send *
方法- * 后 *
标题

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

正文

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

5lwkijsr6#

我们使用以下文档从Web客户端发送通知。
有一种简单的方法可以通过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;
    }
jgzswidk

jgzswidk7#

对于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);

        }

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

tyky79it

tyky79it8#

新版本的API(称为v1)创建了更多的挑战,以通过ARC发送消息。您需要一个特殊的令牌,该令牌将过期。您必须在firebase控制台中创建firebase admin sdk密钥(服务帐户密钥):
Firebase-admin sdk
它们的密钥是以json格式存储的,大概是这样的:

{
  "type": "service_account",
  "project_id": "<your project ID>",
  "private_key_id": "8b..............................37",
  "private_key": "-----BEGIN PRIVATE KEY-----
  MIIE.....
  ....
  -----END PRIVATE KEY-----\n",
  "client_email": "firebase-adminsdk-6fzie@<yourprojectID>.iam.gserviceaccount.com",
  "client_id": "1...................4",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": 
  "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk- 
  6fzie%40<yourprojectID>.iam.gserviceaccount.com"
  }

在获取http通信的令牌时,密钥用于识别您的身份。您需要一种服务器访问firebase的方式。我在WSL中使用了python,其中包含以下代码:

import requests
import google.auth.transport.requests

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/firebase.messaging']

credentials = service_account.Credentials.from_service_account_file('service-account.json', scopes=SCOPES)
request = google.auth.transport.requests.Request()
credentials.refresh(request)
print(credentials.token)

其中service-account.json是运行python的文件系统上的文件中的私钥。

ya29.c.b0Aa9VdylWfrAFWysdUeh3m7cGF-Cow1OAyyE4bEqFL....................48Ye7w

ARC配置与旧版API中的配置类似,但有一些更改。URL已更改,其中包含您的项目ID:

https://fcm.googleapis.com/v1/projects/<your project ID>/messages:send

我们仍然使用POST方法,头文件只有一行内容类型application/json。身份验证有一个单独的标签,我们应该使用Python中的Bearer + token:
Firebase authentication
选择并启用Bearer非常重要,因为它在默认情况下是禁用的。
更改也在正文中。这是基于应用程序令牌发送给单个应用程序的消息示例:

{
      "message" : {
        "token" : "e6e....FurF",
        "notification" : {
          "body" : "Great deal!",
          "title" : " Buy everything"
       }
     }
    }

其中关键字“to”已更改为“token”。仅此而已,我们可以将消息发送到应用程序。我希望将它放在这里,以便能够按照Goggle目前的要求迁移到API v1。最后一段代码用于curl:-)

curl " https://fcm.googleapis.com/v1/projects/<your project id>/messages:send" \
  -X POST \
  -d "{\r\n  \"message\" : {\r\n    \"token\" : \"e6e....FurF\",\r\n    \"notification\" : {\r\n      \"body\" : \"Great deal!\",\r\n      \"title\" : \" Buy everything\"\r\n   }\r\n }\r\n}" \
  -H "Content-Type: application/json" \
  -H "authorization: Bearer ya29.c.b...."

下面是我使用的源代码:
Firebase cloud messaging doc
用于消息传送的GIT HUB代码

相关问题