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) 在 appDelegatefunc application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
和 func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error)
中处理
为您的项目正确设置开发者门户(证书、权限等)
到达设备的所有推送通知都来自 APN,因此您的应用既不关心 Firebase
或 OneSignal
。
我相信您的应用将包含 OneSignal SDK,而不是更新后的 Firebase。
所以我认为您需要在过渡期间通过服务器上的 Firebase 和 OneSignal 处理推送通知的发送。您的服务器需要同时与这两个服务进行通信。 APN 将为您处理其余的交付。
您始终可以在生产前使用沙盒服务器进行试用。
【讨论】:
以上是关于iOS 应用程序可以同时使用基于证书和基于令牌的 APNs 连接吗?的主要内容,如果未能解决你的问题,请参考以下文章
未在 iOS 10 上为基于 XCode 7.3 构建的应用程序生成设备令牌