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 方法,如 registerForRemoteNotifications
或 didReceiveRemoteNotification
(顺便说一句,如果你愿意,你可以禁用它,虽然我看不出任何原因......)。
在技术方面 - 手机与 APN 保持开放连接,并且此隧道用于自行发送消息。
【讨论】:
以上是关于Firebase 推送通知如何在 IOS 上工作?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase FCM 推送通知停止工作 iOS 11.1.1