如何使用C的二进制推送通知格式?

时间:2014-03-20 14:25:33

标签: c apple-push-notifications

我使用Push Notification Binary Interface cmd = 2

这是格式: schema of frame binary format

Q1:我可以在一帧中发送一些device_id吗?例如:

item id = 1,device_tocken#1

item id = 1,device_tocken#2

item id = 1,device_tocken#3

item id = 2,message

item id = 3 ...  等等

Q2:我如何收到回复错误?

enter image description here

文档说:如果您发送APN接受的通知,则不会返回任何内容。

如果我在 SSL_write 之后 SSL_read 并且APN接受了包,则程序正在SSL_read命令中等待。

r = SSL_write(ssl, out_buffer, size);
int len = SSL_read(ssl, in_buff, 6);

如果我从ssl频道读到单线程 - 我有分段错误。

问题3:您是否知道使用此协议的示例的链接?

1 个答案:

答案 0 :(得分:1)

  1. 文档中不清楚,但我认为您不能在同一帧中发送多个设备令牌,只是因为如果您收到无效设备令牌的错误响应,你无法知道它所引用的设备令牌。另一方面,如果您的框架包含单个设备令牌和单个消息标识符,则包含该消息标识符的错误响应将告诉您哪个消息确实导致了该错误。

  2. 您应该使用非阻塞读取来尝试读取错误响应。我不知道你是如何在C中编写的,但必须有一种方法来指定一些超时或调用指定超时的读取方法。如果没有要读取的内容,则该方法将在超时结束后返回。

  3. APNS文档包含samples,用于以旧格式(0和1)发送通知。我建议您使用格式1(支持错误响应),因为我没有看到使用更新格式2的任何优势。