4


2

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

freadを呼び出した後、この情報はどのようにして読みやすい文字に展開されますか?

2 Answer


6


バイナリストリームを入手したら、次のように処理します。

while($ data = fread($ stream、38)){$ feedback = unpack( "N1タイムスタンプ/n1length / H * devtoken"、$ data) //何かをする}

$ feedbackは要素 "timestamp"、 "length"、 "devtoken"を含む連想配列です。


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);