Apple推送通知未到达测试设备

时间:2013-01-27 23:48:44

标签: iphone objective-c push-notification

我已关注Apple's documentation

在我的应用程序中,我成功注册了通知(警报,徽章和声音)并将设备令牌发送到我的服务器(它是一个32字节的字符串,我以十六进制编码进行传输和存储)。一切正常。

如文档中所述,我的配置文件包含设置为“开发”的“aps-environment”。我已经从生成了一个PEM文件证书和与此证书相关的密钥。

我正在使用Grocer(在Github上)从我的服务器发送通知。 Apple很高兴接受通知,但它从未到达设备。我在过去12小时内尝试了很多次,确保应用程序不在前台运行。我正在使用 gateway.sandbox.push.apple.com 作为端点。

我很茫然。我该怎么看? Apple自己的Troubleshooting Guide对我没有帮助。

有些人提到了生成Ad-Hoc配置文件(虽然Apple没有说明需要这样做)。无论如何我试过了,但是配置文件然后在aps环境下说“生产”,我无法在我的设备上安装我的应用程序。

编辑|我只能假设我的PEM证书设置不正确...我说这是因为即使我使用一些完全随机的证书,杂货商似乎仍然“发送”通知。不确定如何调试任何错误。

2 个答案:

答案 0 :(得分:2)

使用开发者资料时需要沙箱网关:

gateway.sandbox.push.apple.com

如果仍然无效,请尝试重启设备!这通常有帮助!

请勿忘记在发布应用时更改链接!

答案 1 :(得分:0)

事实证明,这只是我在客户端错误地对设备令牌进行十六进制编码。我实际上是这样做的:

char *buf = malloc(sizeof(char) * 2 * numBytes);

while (numBytes--)
  sprintf(buf+=2, "%02x", *(bytes++));

问题是byteschar*,当它应该是unsigned char*时,数据就会被破坏。