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

Posted

技术标签:

【中文标题】Firebase 推送通知如何在 IOS 上工作?【英文标题】:How Firebase push notification work on IOS? 【发布时间】:2018-09-09 16:09:53 【问题描述】:

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

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

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

【问题讨论】:

firebase.google.com/docs/cloud-messaging/ios/certs 谢谢,但是 fcm sdk 在 ios 上是做什么的?开发者可以使用ios的默认通知接口! 更正 -- Pushy (pushy.me) 使用 APNs 来传递通知,绝对不是长轮询 HTTP 请求。 【参考方案1】:

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

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

Google 还提供其他服务,您可以使用它来扩展 FCM。例如云函数。

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

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

【讨论】:

【参考方案2】:

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

在技术方面 - 手机与 APN 保持开放连接,并且此隧道用于自行发送消息。

【讨论】:

以上是关于Firebase 推送通知如何在 IOS 上工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何向 ios 应用程序发送 Firebase 推送通知

Firebase FCM 推送通知停止工作 iOS 11.1.1

iOS 空 Firebase 推送通知不显示

在 ionic cordova 和 firebase 中为 iOS 应用程序设置推送通知

iOS:无法解析来自 firebase 的推送通知

带有 Swift 的 Firebase 推送通知在 ios 11.4 中不起作用