iOS 应用程序可以同时使用基于证书和基于令牌的 APNs 连接吗?

Posted

技术标签:

【中文标题】iOS 应用程序可以同时使用基于证书和基于令牌的 APNs 连接吗?【英文标题】:Can an iOS app use both certificate-based and token-based APNs connections at the same time? 【发布时间】:2018-08-04 14:19:47 【问题描述】:

我们目前正在为现有应用准备更新,该应用通过 Firebase 提供推送通知,该应用使用基于令牌的 APNs 连接。

由于后端的变化,我们希望过渡到基于证书的 OneSignal。

由于该应用将作为更新发布,我们希望在过渡期间保持通过 Firebase 的推送,而更新的版本应该能够通过 OneSignal 接收推送。

我的问题是:我可以将两者同时用于一个 App-ID 吗?还是会互相干扰?

Apple's docs提一下

要发送通知,您的提供商服务器必须使用 HTTP/2 和 TLS 与 APN 建立基于令牌或基于证书的信任。

但不要说要同时实现两者。

【问题讨论】:

【参考方案1】:

您实际上可以同时使用它们。

您还可以生成 2 个证书并同时使用它们。

您还可以在多个地方使用单个证书/令牌。

对此没有任何限制 - 证书/令牌仅用于识别您的身份,即您的 App ID。

【讨论】:

是的,这应该是正确的答案,我的应用程序同时使用了证书和令牌【参考方案2】:

既然您提到“通过 OneSignal 接收推送”,我假设您在谈论 ios 应用程序,但我相信这更多是后端问题。因为在 iOS 上你所要做的就是

通过项目设置注册推送通知 请求权限 (Info.plist) 在 appDelegate func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) 中处理 为您的项目正确设置开发者门户(证书、权限等)

到达设备的所有推送通知都来自 APN,因此您的应用既不关心 FirebaseOneSignal

我相信您的应用将包含 OneSignal SDK,而不是更新后的 Firebase。

所以我认为您需要在过渡期间通过服务器上的 Firebase 和 OneSignal 处理推送通知的发送。您的服务器需要同时与这两个服务进行通信。 APN 将为您处理其余的交付。

您始终可以在生产前使用沙盒服务器进行试用。

【讨论】:

以上是关于iOS 应用程序可以同时使用基于证书和基于令牌的 APNs 连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

未在 iOS 10 上为基于 XCode 7.3 构建的应用程序生成设备令牌

Django:基于 DRF 令牌的身份验证 VS JSON Web 令牌

Paramiko 是不是支持基于证书的身份验证

具有基于云服务的 iOS 应用程序

使用 Spring 和 JWT 进行基于令牌的身份验证

[使用.p8文件在php中发送iOS推送通知