如何使用命令2发送推送通知二进制格式

时间:2014-05-14 16:03:47

标签: php ios binary apple-push-notifications

有一个相关问题,但已有4个月没有答案:PHP Apple iOS Push Notifications: Command2 : Binary Interface and Notification Format

我正在将我的推送通知从命令0格式迁移到命令2​​。

我正在使用苹果文档https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html,我找不到我做错了什么。我顺便使用php。

对于命令0 :(有效)

$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
命令1的

:(可行)

$msg =
  chr(1)
. chr(1).chr(1).chr(1).chr(1) //id 1111
. pack('N', time() + 86400) //tomorrow expiration date
. pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
命令2的

:(不起作用)

$msgInner =
  chr(1)
. pack('n', 32)
. pack('H*', $deviceToken)

. chr(2)
. pack('n', strlen($payload))
. $payload

. chr(3)
. pack('n', 4)
. chr(1).chr(1).chr(1).chr(1)

. chr(4)
. pack('n', 4)
. pack('N', time() + 86400)

. chr(5)
. pack('n', 1)
. chr(10);

$msg=
chr(2)
. pack('n', strlen($msgInner))
. $msgInner;

通知既没有到达命令8响应包

1 个答案:

答案 0 :(得分:1)

似乎我使用的是2字节帧大小而不是4字节

$msg=
chr(2)
. pack('N', strlen($msgInner)) //N is for 32 bits big endian
. $msgInner;