我一直在寻找答案,似乎无法找到它。我将PUSH通知发送到我的应用程序的多种风格。我之前已将其设置为遍历每个证书并将其与用户应用类型进行匹配。实际上,我为每个证书创建一个新的SSL连接,然后发送该特定证书的任何通知。
转换所有这些证书并在它们过期时安装它们有点乏味。我可以将KeyChain访问中的多个证书作为单个p12文件导出并进行转换,这有助于从证书管理角度更加简单。问题在于没有收到我的PUSH通知。我可以成功连接到APNS,反馈服务没有报告任何问题,但似乎没有任何问题。这使我相信APNS正在验证文件中唯一的第一个证书,并忽略任何其他允许成功连接但可能阻止传递通知的证书。在这种情况下,我会期望连接断开或反馈服务上报告的内容,但到目前为止我都看不到。
有没有人对成功做到这一点有任何见解?谢谢。
答案 0 :(得分:3)
让我重申一下:您将多个证书打包在一起形成一个容器/集合/任何内容,并且您正在使用它来与APNS建立相互认证的SLL会话。然后,您发送一个或多个与任何一个证书相关联的设备的请求,但它不起作用。那是准确的吗?
如果是这样,那么我认为你对这个问题的总结是正确的。事件序列是在建立SSL会话时评估证书。这是网络协议的一部分,此时APNS服务器必须选择要使用的证书。然后,当您发送请求时,“应用程序服务器”仅验证设备令牌包含与证书相同的帐户信息。你的场景非常重要,除非Apple明确投入支持,否则它没有机会运作。在那种情况下,我希望在开发人员文档中提及它。事实并非如此。
在这种情况下,您也不会在反馈服务中看到任何内容,因为只会收集/发送与证书中的帐户相关联的设备的反馈。
BTW如果您使用的是APNS协议的增强格式,那么您可以在发送时读取错误响应。有关详细信息,请参阅programming guide。