Apple のフィードバック APNS サーバーに正常に接続できましたが、fread() から取得したバイナリ データを展開する方法がわかりません。誰もこれを行う方法を知っていますか? ドキュメントによると、最初の 4 バイトはタイムスタンプ、次の 2 バイトはトークンの長さ、残りはデバイス トークンです。
fread の呼び出し後、この情報はどのようにして読み取り可能な文字に展開されるのでしょうか?
Apple のフィードバック APNS サーバーに正常に接続できましたが、fread() から取得したバイナリ データを展開する方法がわかりません。誰もこれを行う方法を知っていますか? ドキュメントによると、最初の 4 バイトはタイムスタンプ、次の 2 バイトはトークンの長さ、残りはデバイス トークンです。
fread の呼び出し後、この情報はどのようにして読み取り可能な文字に展開されるのでしょうか?
バイナリ ストリームを取得したら、次のように処理できます。
while ($data = fread($stream, 38)) {
$feedback = unpack("N1timestamp/n1length/H*devtoken", $data);
// Do something
}
$feedback は、要素 "timestamp"、"length"、および "devtoken" を含む連想配列になります。
実際にそれを理解しました、これはより信頼できるようです:
$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);