我真的不知道如何问这些但希望我能让自己清楚明白,以便你理解我的问题
邮件限制为256.但是我需要将此限制强加给哪些邮件? 起初我以为这是指json的大小。但在查看代码zend使用以及使用推送通知的其他人之后,通过有效负载发送附加信息(json为256但发送的有效负载为270)。我应该将json限制在240或更低吗?
如果多条消息具有相同的ID(我不是在谈论设备ID),会发生什么情况
我可以多快向同一设备发送第二条消息?我有一些问题,只有一条消息到来。
我使用Id的时间戳,所以我想知道这是否是我的问题的原因,或者我可能无法在同一秒内向单个设备发送5条消息。
答案 0 :(得分:2)
通知有效负载
每个推送通知都包含有效负载。有效负载包含 有关系统应如何提醒用户以及任何信息的信息 您提供的自定义数据。通知允许的最大大小 有效载荷为256字节; Apple推送通知服务拒绝任何 通知超出此限制。
限制在完整的有效载荷上,这意味着JSON +您的消息。因此,您的消息应限制为236个字符,然后添加以下JSON的字符数:{"aps":{"alert":""}}
。
我能以多快的速度向同一设备发送第二条消息?我有一些问题,只有一条消息到达。
向一台设备发送消息没有限制。但是,Apple不保证传递您的所有消息,并且APNS可能仅提供设备的最新推送通知消息,以防从一个应用程序收到多条消息,这些消息发往同一设备。
收到了一些通知,但并非全部
如果您在短时间内向同一设备或计算机发送多个通知 一段时间内,推送服务只会发送最后一个。
这就是原因。设备或计算机确认收到每个 通知。直到推送服务收到该确认,它 只能假设设备或计算机已脱机 理由并将通知存储在服务质量(QoS)中 排队等待将来重新开始。这里的往返网络延迟是 当然是一个主要因素。
如本地和推送通知编程指南中所述 QoS队列为每个设备或计算机的每个应用程序保留一个通知。 如果服务在收到通知之前收到另一个通知 队列被发送,新通知将覆盖前一个通知。
感谢Joachim Isaksson提供上述链接。
答案 1 :(得分:1)
嗯,256字节限制是在JSON有效负载的二进制表示上(设备令牌以及其他标头不包括在此计数中)。这意味着如果您只使用UTF-8编码中需要单个字节的字符,则可以发送256个字符的JSON字符串。如果使用字符需要多个字节的语言发送文本,则有效负载中的字符数量将减少。我测试了它,这就是它的表现。
至于发送多个具有相同id的消息,这将破坏消息id的目的。当Apple在您的消息中遇到一些错误(例如无效的设备令牌)时,它会发回包含您提供的消息ID的错误响应。如果您发送多个具有相同ID的邮件,您将无法知道哪条邮件会导致错误响应。