4

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

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

我对 ssl 和加密有足够的了解,知道我一无所知,但我很确定问题是(或开始于)我们的生产 SSL 证书。在 iPhone 门户中为生产启用了推送通知(我们有一个绿灯)。证书已安装在运行 PushMeBaby 的机器上,我在钥匙串中看到了证书和签名密钥。当我导出开发推送证书并在 PushMeBaby 中使用它时,我能够连接(并发送推送)没有问题。但是有了生产证书,我们一事无成。我们已经在两台不同的计算机上反复撤销并重新创建了开发证书和产品证书,所以如果这是人为错误,我们会重复这样做。

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

此外,我们还没有在创建生产证书后设置配置文件。我不确定这是否是一个因素,但我看不出它对于店内应用程序可能是怎样的。

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

4

3 回答 3

15

正如文档所说,它存在 2 个证书和 2 个用于推送通知的 IP 地址:

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

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

有关更多信息,请参见此处:供应和开发

于 2010-02-23T16:24:36.257 回答
4

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

问题在于:

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

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

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

于 2010-07-22T02:36:19.270 回答
1

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

于 2011-03-26T11:54:50.033 回答