2

当我在开发模式下运行我的应用程序时,我可以毫无问题地收到通过 PushMeBaby 发送给自己的推送通知。但是,当我尝试在生产环境中对其进行测试时,我无法收到任何推送通知。我重新生成了所有证书和配置文件,使用 aps_production_identity.cer 作为推送通知的证书,将 SSL 更改为 gateway.push.apple.com,并为应用程序进行了发布构建,但仍然无法获得它工作。我发现在 PushMeBaby 中,这条线

result = SSLHandshake(context);

返回错误 -9844。这是否意味着 aps_production_identity.cer 文件有问题?

4

2 回答 2

1

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

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30);
NSLog(@"SSLSetPeerDomainName(): %d", result);

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

于 2010-06-10T16:16:44.087 回答
1

我认为最好不要在代码中硬编码这样的数字,即使它是示例代码。我认为 30 是一个端口号(我为没有进行更多代码评估而感到羞耻)。

我把那条线改成这样:

#define kApplePushGateway "gateway.push.apple.com" //"gateway.sandbox.push.apple.com"

result = SSLSetPeerDomainName(context, kApplePushGateway, [[NSString stringWithUTF8String:kApplePushGateway] length]);
NSLog(@"SSLSetPeerDomainName(): %d", result);
于 2012-06-01T14:31:52.270 回答