【问题标题】:Is firebase not always sending notifications through APNs?firebase 不总是通过 APNs 发送通知吗?
【发布时间】:2019-05-06 07:48:47
【问题描述】:

我注意到firebase documentation 表示以下内容:

如果提供通知 payload,或 content_available 选项设置为 true 用于向 iOS 设备发送消息,消息是 通过 APNs 发送,否则通过 FCM 连接发送 服务器

谁能解释一下这是什么意思?

我以为所有发送到 iOS 设备的推送通知,都会先发送到 Apple,然后由 Apple 转发到相应的设备,但这里暗示它们是直接发送消息到设备?

当应用在 iOS 上关闭时,这是否可能?

我很困惑, 谢谢。

【问题讨论】:

    标签: ios firebase apple-push-notifications firebase-cloud-messaging firebase-notifications


    【解决方案1】:

    当应用程序在前台时,FCM 可以直接连接而不是通过 APNs 获取data 类型的消息。正如您所期望的那样,在后台发送的消息通过 APNs 传递。如果您愿意的话,您实际上可以看看source of the FCM client

    您可以控制这是否与shouldEstablishDirectChannel 属性一起使用。

    从发送的角度来看,您无需过多担心这一点 - 它作为 FCM 服务的一部分进行透明处理,具体取决于消息的类型以及是否连接了客户端。

    【讨论】:

    • 这是我不明白的:链接上的文档是关于他们的 http API,而不是他们的 Objective-C sdk(fcm 客户端)。 Firebase 拥有如此多的工具和服务,以至于很难理解它们的含义。他们为什么要在描述如何调用他们的 web http api 的页面中添加有关客户端 SDK 的信息?这仍然没有意义。
    • 免责声明:我在 Firebase 上工作!注释的原因只是有些人看到他们发送的消息不是通过 APN 发送的,并且想知道为什么。为这种东西找到一个好家是很困难的! content-available 是一个 iOS 特定字段,这就是它包含 iOS 详细信息的原因。
    • 关于 Ian 的快速问题,fcm 到设备的直接连接是否可以创建可见通知(通过在接收它的设备的客户端分派本地通知),或者该通道是否仅工作对于不需要向用户显示的纯数据消息?
    【解决方案2】:

    根据我阅读文档后的理解,它可能试图说明:

    如果可以推断通知是针对 iOS 设备的(无论是来自通知有效负载还是内容可用密钥),它会绕过 FCM 并直接发送到 APNS 以进行众所周知的优化无论如何 100% 都注定要使用 APNS。

    否则,它将被发送到 FCM 并被路由到它应该从那里到达的任何地方。它可能仍然是 iOS 设备的通知,并从 FCM 发送到 APNS,但无法推断。

    【讨论】:

    • 等等,我还是不明白,但是这个文档无论如何都是为了通过他们的 http API 调用 FCM(这不是他们的 sdk 的文档吗?)你是在暗示这个如果我们从他们的 SDK 中调用,调用不会调用对 fcm 的 http 请求,而是如果没有通知有效负载或内容可用密钥,它会直接将数据发送到 APNS?
    • 有点。我仍然不明白它是如何通过仅检查通知有效负载的存在来判断它是否是 iOS 通知(它可以推断它是否检查了内部值),但总体思路是肯定的,如果它可以推断出它是针对 iOS 的,它会跳过 FCM 并直接连接到 APNS。同样,我没有检查实际的 SDK,这只是我阅读文档后的理解
    • 我不认为文档指的是他们的 sdk,我认为这是纯 HTTP 请求,如果我们只是调用他们的 web api,那么在任何地方都没有实现逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2013-04-16
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2015-12-29
    相关资源
    最近更新 更多