2

我遵循了 Apple 的文档

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

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

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

我不知所措。我应该看什么?Apple自己的故障排除指南 对我没有帮助。

有些人提到生成一个 Ad-Hoc 配置文件(尽管 Apple 没有声明这是必需的)。无论如何我都试过了,但是配置文件在 aps-environment 下说“生产”,我无法在我的设备上安装我的应用程序。

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

4

2 回答 2

2

使用开发者配置文件时需要沙箱网关:

gateway.sandbox.push.apple.com

如果这仍然不起作用,请尝试重新启动设备!这通常有帮助!

不要忘记在您的应用发布时更改链接!

于 2013-01-28T00:02:40.630 回答
0

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

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

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

问题是那bytes是 a char*,而它应该是 a unsigned char*,所以数据被破坏了。

于 2013-01-29T12:13:38.527 回答