【问题标题】:Push notifications not working in the production environment推送通知在生产环境中不起作用
【发布时间】:2010-05-25 01:08:25
【问题描述】:

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

result = SSLHandshake(context);

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

【问题讨论】:

  • 您的意思是您进行了临时构建而不是发布(分发)构建?除非你做一些签名巫术,否则你不应该能够在你的设备上运行分发构建。

标签: iphone push notifications production


【解决方案1】:

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

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

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

【讨论】:

  • 30 不是端口号!但是域字符串的长度。所以对于“gateway.sandbox.push.apple.com”它是 30。但是对于“gateway.push.apple.com”它是 22...
  • 上下文和结果的数据类型是什么
【解决方案2】:

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

我把那行改成了这样:

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

result = SSLSetPeerDomainName(context, kApplePushGateway, [[NSString stringWithUTF8String:kApplePushGateway] length]);
NSLog(@"SSLSetPeerDomainName(): %d", result);

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 2014-01-19
    • 2014-02-16
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多