Firebase 推送通知如何在 IOS 上工作?

How Firebase push notification work on IOS?

我想为自己的 iOS 应用程序创建自己的推送通知机制。

我比较了一些服务,例如 pushy.me 或 Google Firebase。我认为 Pushy 是唯一可以独立于 Apple APNs 推送通知的服务,但它使用简单的 HTTP 长轮询请求来接收通知(在 iOS SDK 中)。

但是 Firebase 是如何工作的?它仍然依赖于 Apple 的 APNs 吗?它将如何影响我的电池寿命?

Firebase Cloud Messaging (FCM) 通过 Apple 的推送通知服务向 iOS 设备发送推送通知。 FCM 还扩展了推送通知的功能。 FCM如何扩展?

  • FCM 适用于 iOS 和 Android。如果您同时拥有适用于两个平台的应用程序,那么这个功能很酷;
  • 无需开发用于发送通知、存储 pn 令牌等的后端。只需在 Google 开发者控制台中注册您的应用并遵循用户指南。要发送推送,只需使用参数向 https://fcm.googleapis.com/fcm/send 执行请求;
  • 广播通知。该应用程序订阅了 topic,然后您可以向所有 topic 订阅者发送通知。很酷;
  • 上游消息(向服务器发送数据)

另外 Google 有其他服务可以用来扩展 FCM。例如云函数。

我没有发现 FCM 集成对我的应用程序的电池寿命有很大影响。

更新: FCM 框架将推送通知令牌(和其他信息)发送到 Google 服务。另外,正如我上面提到的,您可以订阅特定 topic 的应用程序。比 Google 知道需要向哪个设备发送推送。 有可能在 iOS 中自动设置 FCM(使用 method swizzling)。 FCM 交换 AppDelegate 方法并知道您的设备 pn 令牌。

Firebase 云消息传递 (FCM) 利用 APN(Apple 推送通知服务)将消息传送到 iOS 设备。 所以基本上,FCM 包装 iOS 方法,如 registerForRemoteNotificationsdidReceiveRemoteNotification 使用方法调配(顺便说一句,如果你愿意,你可以禁用它,虽然我看不出任何原因......)。

在技术方面 - phone 与 APNs 保持开放连接,此隧道用于自己发送消息。