2010-02-23 83 views
4

我们使用开发认证和gateway.sandbox.push.apple.com向通知设置发送通知没有任何问题。但现在现在我们的应用程序已经在商店中了,即使我们使用创建证书的机器,我们甚至无法连接到生产apn服务器(gateway.push.apple.com)来发送推送第一个地方。无法连接到生产Apple推送通知服务器

我们已经通过PushMeBaby运行了它,它看起来像到gateway.push.apple.com的连接正在被拒绝。当它执行握手(SSLHandshake(context))时,结果是错误代码-9044或errSSLConnectionRefused - 对等体在响应之前断开连接。

我对ssl和加密有足够的了解,知道我不知道某件事情,但我非常肯定问题是(或开始于)我们的生产SSL证书。推送通知在iPhone门户中启用生产(我们有绿灯)。证书已安装在运行PushMeBaby的计算机上,我在钥匙串中看到证书和签名密钥。当我导出开发推送证书并在PushMeBaby中使用它时,我能够连接(并发送推送)没有问题。但随着生产证书,我们无处可去。我们一再撤消并在两台独立的计算机上重新创建了开发证书和产品证书,所以如果这是人为错误,我们会一再重复。

有一点可能是一个因素,我的钥匙串上有“团队代理”键,但我不是她。我可以并且没有任何问题地将二进制文件提交给App Store。

另外,创建生产证书后,我们还没有设置配置文件。我不确定这是否是一个因素,但我不明白它是如何用于店内应用的。

我当然希望有人有一些想法,因为我离开他们!

回答

4

是的,我已经解决了这个错误。 我失去了几天找到解决方案。

的问题是在该行:

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30); 

NSLog(@"SSLSetPeerDomainName(): %d", result); 

您必须将端口更改为30号这解决了这个问题。

+0

使用PushMeBaby发送到制作APNs URL(gateway.push.apple。com)我被迫完全评论这条线。所以我更改了URL,取代了证书,并且注释掉了这一行。然后它为我工作。 – brentlightsey 2010-12-22 13:37:15

+6

这里,30实际上是字符串“gateway.sandbox.push.apple.com”的长度。因此,当你将它改为“gateway.push.apple.com”时,你必须将该数字改为22.因此它将是:result = SSLSetPeerDomainName(context,“gateway.push.apple.com”,22); – 2011-03-30 11:12:42

+0

非常感谢@ChintanPatel。为我们节省了很多时间:) – 2013-03-07 04:24:33

15

作为文档表示存在2个证书和2个的IP地址为推送通知:

  • 沙盒:gateway.sandbox.push.apple.com,端口2195(用于开发)
  • 制作:gateway.push.apple.com,端口2195.(用于发布)

您总是使用网关进行开发。尝试使用其他网关(用于生产)。

欲了解更多信息,请浏览:Provisioning and Development

+0

感谢您的回复。我们仅在生产证书中使用gateway.push.apple.com - 这是连接停止的地方。当我们使用gateway.sandbox.push.apple.com和开发证书时,它工作正常。我们一直非常小心,不要混淆两者。 – Andrew 2010-02-23 16:58:44

+0

非常感谢... – 2015-06-25 11:28:13

1

在我们的测试中发生了类似的问题,因为我们试图使用开发人员设备令牌而不是生产版本。

+0

我们已经意识到了这个问题,因为我们在另一个项目中遇到了它。我确定这是推送通知开发人员的常见问题,但在这种情况下,它与此无关。作为其他开发人员的建议,最好从开发产品测试中涉及的所有设备收集令牌,并定期扫描您的生产数据库。 – Andrew 2011-03-27 04:29:28

相关问题