在我的应用程序中,我成功注册了通知(警报,徽章和声音)并将设备令牌发送到我的服务器(它是一个32字节的字符串,我以十六进制编码进行传输和存储)。一切正常。
如文档中所述,我的配置文件包含设置为“开发”的“aps-environment”。我已经从生成了一个PEM文件证书和与此证书相关的密钥。
我正在使用Grocer(在Github上)从我的服务器发送通知。 Apple很高兴接受通知,但它从未到达设备。我在过去12小时内尝试了很多次,确保应用程序不在前台运行。我正在使用 gateway.sandbox.push.apple.com 作为端点。
我很茫然。我该怎么看? Apple自己的Troubleshooting Guide对我没有帮助。
有些人提到了生成Ad-Hoc配置文件(虽然Apple没有说明需要这样做)。无论如何我试过了,但是配置文件然后在aps环境下说“生产”,我无法在我的设备上安装我的应用程序。
编辑|我只能假设我的PEM证书设置不正确...我说这是因为即使我使用一些完全随机的证书,杂货商似乎仍然“发送”通知。不确定如何调试任何错误。
答案 0 :(得分:2)
使用开发者资料时需要沙箱网关:
gateway.sandbox.push.apple.com
如果仍然无效,请尝试重启设备!这通常有帮助!
请勿忘记在发布应用时更改链接!
答案 1 :(得分:0)
事实证明,这只是我在客户端错误地对设备令牌进行十六进制编码。我实际上是这样做的:
char *buf = malloc(sizeof(char) * 2 * numBytes);
while (numBytes--)
sprintf(buf+=2, "%02x", *(bytes++));
问题是bytes
是char*
,当它应该是unsigned char*
时,数据就会被破坏。