来自一台服务器的多个应用程序的 IOS 推送通知

Posted

技术标签:

【中文标题】来自一台服务器的多个应用程序的 IOS 推送通知【英文标题】:IOS Push Notifications for multiple Apps from one server 【发布时间】:2013-08-23 18:20:19 【问题描述】:

我们为推送通知设置了 2 个应用程序。 (甲和乙)

每个(当然)都有不同的配置文件,我们为每个生成了单独的证书。 应用 A 接收推送通知正常,应用 B 没有。

两者都在与同一台服务器通信 - 它确实会确定将通知发送到哪个应用程序并使用正确的证书。

我注意到,如果您在一台设备上安装这两个应用程序,它们都会获得相同的令牌(我们的服务器会跟踪每个应用程序。)。在这种情况下,当服务器发送一个 msg 时,它会向同一个 Token 发送两次 - 每个证书一次。应用 A 将收到消息,应用 B 不会。

将消息发送到两个应用程序时,Apple 服务器会响应所有消息都已正确发送且没有错误。但是消息永远不会出现在一个应用程序中。

关于去哪里看有什么建议吗?

【问题讨论】:

如果你先发送B通知,B应用会收到而A应用不会? XCode 肯定为每个应用程序设置了不同的配置文件,并且这两个应用程序当前都在商店中并且正在工作 - 除了推送通知。令牌绝对是相同的。 只有 App B 的设备设置永远不会收到消息。服务器已经在 App A 之前发送给 App B。 @CasaDelGato 根据您的描述,问题出在 App B 的证书上,或者出在 App B 的配置文件上(当您第一次启动 App B 时,您是否会询问是否允许推送通知?) @Eran - 想想看,我认为任何一个应用程序都没有问过我是否要允许推送通知。我已经多次从设备中删除它们。嗯,但就我而言,我总是通过直接从 Xcode 构建来“安装”。 【参考方案1】:

经过大量搜索和查找,我发现了这个问题:Iphone - Multiple Apps, Different App ID, Same Token

它指出您必须为每个应用程序使用不同的 .certSigningRequest。我与我们的 AppStore 人员核实过,他对两个证书都使用了同一个。他解决了这个问题,现在它可以工作了!

【讨论】:

是的,您需要将私钥处理为 p12 文件以准备 pem 文件,并且此私钥是在创建 .certSigningRequest 文件时在钥匙串应用程序中生成的。因此,此 CSR 可以在到期时重复用于同一应用程序,但任何其他应用程序都需要单独使用。是时候接受你的回答了。

以上是关于来自一台服务器的多个应用程序的 IOS 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中将推送通知从一台设备发送到另一台设备

向 IOS 问题推送通知 CodeName One

我们可以从 iOS 设备向 APNs 发送推送通知吗?

iOS:生产推送通知,来自 APNS 服务器的无效令牌

Quickblox - 如何将通知推送到 Android 和 iOS 平台?

来自网络浏览器 ios 的推送通知