Firebase 通知可以与 APN 共存吗?
Posted
技术标签:
【中文标题】Firebase 通知可以与 APN 共存吗?【英文标题】:Can Firebase notifications coexist with APNs? 【发布时间】:2016-12-19 12:15:10 【问题描述】:我正在编写一个接收推送通知的 ios SDK。
到目前为止,我们要求应用程序开发人员给我们一个按键,以便我们可以向应用程序发送推送消息。开发人员将一些路由代码添加到他们的 APNs 监听器中,实现简单 -
if push.hasKey('forSDK') and push['forSDK']:
send_push_to_sdk
else:
do_the_app_thing
这很乏味,并且需要在令牌过期时与应用开发者进行协调。而且我们发现using Firebase notifications for iOS比connecting to APNs简单很多。
有没有办法将 Firebase 通知(用于 SDK)与应用的 APN 一起使用,以便我可以省略路由代码?
【问题讨论】:
不太清楚您要解决的问题。听起来您不想让客户端存储 APNS 推送通知?由于Firebase uses APNS,几乎任何组合都可以在这里使用。要从 Firebase 中的客户端发送通知,您需要 direct them to your backend server,然后它会代表您发送通知。请注意,除非您使用主题/设备组发送,否则您仍然需要存储客户端的注册令牌。 @Kato 感谢您的评论。我正在尝试使用 firebase 将通知直接发送到我的 SDK,而托管应用程序(可能使用直接 APN)没有任何更改。 【参考方案1】:在接收方
如果托管应用使用直接 APN,如果您不想让开发人员将路由逻辑添加到他们的 didReceiveRemoteNotification:
,您有两种选择:
在您的 SDK 中实现 - (BOOL)handleIncomingNotification:
,并让开发人员始终调用它,如下所示:
BOOL handled = [AdamMatanSDK handleIncomingNotification:userInfo];
if (!handled)
// developer does their own logic here (do_the_app_thing)
或者您的 SDK 可以调动托管应用的应用委托的 didReceiveRemoteNotification:
,以便在调用应用委托的原始方法之前检查通知。
发送方:
您当然可以直接将 Firebase 通知与 APN 一起使用,因为 Firebase 使用 APN 来发送 iOS 推送通知。
但是,如果您要通过 APNs 向他们发送推送通知,您仍然需要您的开发人员随时更新他们的 APNs 推送证书。如果现在这样做很乏味,您可以通过使用 Firebase 通知来节省一些乏味,因为您将有一个 GUI 来管理证书。
您可以在自己的 Firebase 控制台中管理这些证书,或者开发者可以自己在自己的 Firebase 控制台中维护推送证书,并邀请您作为 SDK 开发者访问他们的 Firebase项目。无论哪种方式,您都会看到一个 Firebase 项目列表,然后切换到它们以发送推送通知,或者使用 Firebase's Cloud Messaging HTTP API 以编程方式向每个 Firebase 项目发送推送。
【讨论】:
以上是关于Firebase 通知可以与 APN 共存吗?的主要内容,如果未能解决你的问题,请参考以下文章