【问题标题】: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"
}
}