推送通知在生产环境中不起作用

时间:2010-05-25 01:08:25

标签: iphone push notifications production

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

result = SSLHandshake(context);

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

2 个答案:

答案 0 :(得分:1)

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

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

您必须将端口更改为数字30.这样可以解决问题。

答案 1 :(得分: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);
相关问题