4

Apple のフィードバック APNS サーバーに正常に接続できましたが、fread() から取得したバイナリ データを展開する方法がわかりません。誰もこれを行う方法を知っていますか? ドキュメントによると、最初の 4 バイトはタイムスタンプ、次の 2 バイトはトークンの長さ、残りはデバイス トークンです。

fread の呼び出し後、この情報はどのようにして読み取り可能な文字に展開されるのでしょうか?

4

2 に答える 2

6

バイナリ ストリームを取得したら、次のように処理できます。

while ($data = fread($stream, 38)) {
  $feedback = unpack("N1timestamp/n1length/H*devtoken", $data);
  // Do something
}

$feedback は、要素 "timestamp"、"length"、および "devtoken" を含む連想配列になります。

于 2009-10-21T13:20:54.410 に答える
2

実際にそれを理解しました、これはより信頼できるようです:

$arr = unpack("H*", $devconts); 
$rawhex = trim(implode("", $arr));

$feedbackTime = hexdec(substr($rawhex, 0, 8)); 
$feedbackDate = date('Y-m-d H:i', $feedbackTime); 
$feedbackLen = hexdec(substr($rawhex, 8, 4)); 
$feedbackDeviceToken = substr($rawhex, 12, 64);
于 2009-10-28T13:59:53.083 に答える