2014-05-14 31 views
0

有一個相關的問題,但4個月大,也沒有答案:PHP Apple iOS Push Notifications: Command2 : Binary Interface and Notification Format如何發送推送通知的二進制格式與命令2

我遷移我的推送通知,從命令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響應數據包

+0

我從來沒有嘗試執行命令2的格式,但它提供了小的改進在命令1格式,所以,除非你需要的優先領域,我會建議使用命令1(你說它適合你)。 – Eran

回答

1

看來我是用2字節的幀,而不是4個字節

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