php - 某些 token 的有效负载不正确

标签 php ios sockets push-notification apple-push-notifications

我在使用 PHP 中的推送通知脚本时遇到问题,但这取决于 token 。

我有一些 token ,转换后(使用 pack())似乎在 2 行上。

因此,当我在套接字上写入时,数据包的所有其余部分都不会收到推送。

我尝试了一个带有 4 个 token 的非常简单的脚本。

我有一个非常奇怪的 token :“2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7”当我尝试向此发送推送时,没有发送任何内容。

如果我把这个 token 放在最后,第一个 token 将收到推送,如果我把它放在第二个位置,则只有第一个设备会收到推送......

当我调试时,我可以看到换行符,但我不确定这就是问题

Token : string(64) "2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7"
Concersion: string(131) " /�"9�^G7�����h��I�S
���e_�^{"aps":{"alert":"Xxxxx XX - Test -               Push"},"main_node_id":"756516","contentobject_id":"634997"}"

Token: string(64) "b0ddb6a64fb546494d14759d1f62050fa6bab81a8bd34a2448eb9c6a650adc21"
Conversion: string(131) " �ݶ�O�FIMu�b�����J$H�je
�!^{"aps":{"alert":"Xxxxx XX - Test -    Push"},"main_node_id":"756516","contentobject_id":"634997"}"

Token : string(64) "3a7c392fc642b946a5604579ef3fce8174dcb9eb70688d9d429ab3000427638a"
Conversion: string(131) " :|9/�B�F�`Ey�?΁tܹ�ph��B��'c�^{"aps":{"alert":"Xxxxx XX - Test - Push"},"main_node_id":"756516","contentobject_id":"634997"}"

Token : string(64) "2a4c36091a2169d1276e14d657b8d58a98b8a10b0376980adb8706ff87737ee4"
Conversion: string(131) " *L6     !i�'n�W�Պ���
                                v�
ۇ��s~�^{"aps":{"alert":"Xxxxx XX - Test -  Push"},"main_node_id":"756516","contentobject_id":"634997"}"

这是我的 PHP 函数,用于创建发送到套接字的数据包:(我尝试使用其他一些库..它是相同的)

protected function _buildPacket( array $body, $token ) {
    $payload = json_encode( $body );
    return chr( 0 ) . pack( "n", 32 ) . pack( 'H*', str_replace( ' ', '', $token ) ) . pack( "n", strlen( $payload ) ) . $payload;
}

你已经看过了吗?

请注意,我重复使用相同的套接字,因此此 token 会破坏某些内容,但我不明白是什么。

感谢您的帮助

最佳答案

根据您的描述,2f9c2239c85e4705171e379691ace8fd0e68ad984912de530a1f969ebb655fd7 token 无效。也许它是一个沙箱 token ,您正在使用它推送到生产环境,反之亦然。

当您向 APNS 服务器发送带有无效设备 token 的推送通知时,Apple 将返回错误响应(如果您使用的是较新的二进制格式)并关闭套接字。 因此,在具有无效 token 的消息之后通过同一套接字发送的任何消息都将被丢弃,并且需要通过新套接字重新发送。这就是为什么根据消息的顺序您会遇到不同的结果。

阅读有关 Apple 推送通知错误处理的更多信息 here .

关于php - 某些 token 的有效负载不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915328/

相关文章:

linux - SOCK_DGRAM 和 SOCK_STREAM 在上下文 AF_UNIX 套接字中的用途是什么?

c - 使用 Windows 套接字的 WriteFile 返回无效参数错误

ios - 如何自动获取客户端中的IP地址 objective-c

php - 如何将我的站点从 mysql 迁移到 mysqli?

php - PHP 中 MYSQL 的 LOAD DATA INFILE 方法

PHP/HTML 表单向 MySQL 提供空白条目

iphone - Type0 字体的 PDF 解析给我带来麻烦(IOS 应用程序)?

ios - 在Xcode Swift Facebook登录SDK中无法获取访问 token

php - 在php mysql中动态生成链接

ios - 应用内购买缺少提交按钮以供首次审核