我正在编写一个接收推送通知的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简单得多。
有没有办法在App的APN旁边使用Firebase通知(用于SDK),以便我可以省略路由代码?
答案 0 :(得分:2)
如果托管应用使用直接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推送通知。
但是,如果您要通过APN向他们发送推送通知,您仍然需要您的开发人员让您更新他们的APN推送证书。如果现在这样做很乏味,那么您可以使用Firebase通知来节省一些乏味,因为您有一个GUI来管理证书。
您可以在自己的Firebase控制台中管理这些证书,或者开发人员可以在其自己的 Firebase控制台中维护推送证书,并邀请您作为SDK开发人员访问其Firebase项目。无论哪种方式,您都会看到Firebase项目列表,并切换到它们以发送推送通知,或使用Firebase's Cloud Messaging HTTP API以编程方式将推送发送到每个Firebase项目。