我正在开发聊天应用程序,并且已成功将Firebase集成到我的iOS应用程序中。现在,Firebase Notifications对我来说并不清楚。我已根据文档正确设置了所有内容,现在当我从Firebase控制台发送通知时,我会收到通知。我想知道Firebase将如何处理或向特定用户发送通知。我们需要将设备信息发送到Firebase吗?或者它是如何工作的?
答案 0 :(得分:0)
我在处理FCM时遇到了同样的问题。
您需要在消息有效负载中设置数据和通知对象,如此处所述。 https://firebase.google.com/docs/cloud-messaging/concept-options#notifications
包含通知和数据有效负载的邮件
接收包含两个通知的邮件时的应用行为 和数据有效负载取决于应用程序是在后台还是 前景 - 基本上,它是否在当时是活跃的 收据。
在后台,应用会收到通知有效负载 通知托盘,仅在用户点击时处理数据有效负载 在通知上。在前台时,您的应用会收到一个 两个有效负载可用的消息对象。这是一个JSON格式 包含通知密钥和数据密钥的消息:
{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
此外,如果要在设备上发送推送通知,则需要设置高优先级。 https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message
设置消息的优先级
您可以通过两种方式为下游分配投放优先级 消息:正常和高优先级。交付正常和高 优先级消息的工作方式如下:
普通优先级。这是邮件传递的默认优先级。 普通优先级消息不会在休眠时打开网络连接 设备,他们的交付可能会延迟,以节省电池。对于 时间敏感的消息较少,例如新电子邮件的通知或 要同步的其他数据,请选择正常的交付优先级
高优先级 允许,FCM尝试立即传递高优先级消息 FCM服务在可能的情况下唤醒睡眠设备并打开一个 与您的应用服务器的网络连接。即时通讯应用, 例如,聊天或语音通话提醒通常需要打开一个 网络连接并确保FCM将消息传递给 设备没有延迟。仅在消息为时设置高优先级 时间紧迫,需要用户的即时互动,但是 请注意,将消息设置为高优先级会对此有所贡献 与普通优先级消息相比,电池消耗。有效值是 正常和高。有关更多详细信息,请参阅HTTP的服务器参考 或XMPP。
对于iOS客户端应用,普通和高优先级类似于APN 优先级5和10.有关iOS特定行为的完整详细信息, 请参阅APNs文档。有关Android特定行为的详细信息, 请参阅针对Doze和App Standby的优化。
以下是通知杂志的普通优先级消息的示例 订阅者可以下载新内容:
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"priority" : "high",
"notification" : {
"body" : "This week's edition is now available.",
"title" : "NewsMagazine.com",
"icon" : "new"
},
"data" : {
"volume" : "3.21.15",
"contents" : "http://www.news-magazine.com/world-week/21659772"
}
}
如果您已成功为Firebase配置项目,则无需向Firebase发送任何内容。 https://firebase.google.com/docs/cloud-messaging/ios/client
答案 1 :(得分:0)
我想了解Firebase将如何处理或向特定用户发送通知。
Firebase服务器充当 中间人 ,用于处理邮件的排队。
例如,对于下游消息传递,您从App Server或使用Firebase控制台发送推送通知,消息将传递到FCM服务器,并将其存储到设备之前必须将其发送到可以接收它(或直到您希望它被传递,请参阅Lifetime of a Message)。
你可以查看GCM的这个Lifecycle Flow(因为我觉得这部分对于FCM来说仍然是一样的):
生命周期流程
- 发送和接收下游消息。
- 发送消息。应用服务器将消息发送到客户端应用:
- 应用服务器向GCM连接服务器发送消息。
- 如果设备处于脱机状态,GCM连接服务器会将消息排队并存储。
- 当设备在线时,GCM连接服务器会将消息发送给设备。
- 在设备上,客户端应用程序根据特定于平台的实现接收消息。有关详细信息,请参阅特定于平台的文档。
- 收到消息。客户端应用程序从GCM连接服务器接收消息。
请注意,我提到的仅适用于下游消息传递。如果您还有兴趣了解上游消息传递的流程,可以查看文档。
我们是否需要将设备信息发送到Firebase?
这取决于您的用例。虽然我认为您最好存储所有注册令牌以备将来使用。
或者它是如何运作的?
除了我上面提到的内容之外,我还要继续引用官方文档中的How does it work?:
它是如何运作的?
FCM实施包括通过HTTP或XMPP协议与FCM交互的应用服务器以及客户端应用。您可以使用应用服务器或Notifications控制台撰写和发送消息。
Firebase Notifications构建于Firebase Cloud Messaging上,并共享相同的FCM SDK以进行客户端开发。要使用功能强大的内置定位和分析功能进行测试或发送营销或参与消息,您可以使用通知。对于具有更复杂的消息传递要求的部署,FCM是正确的选择。