PHP で APNS の SSL チャネルを介して送信される APNS ペイロード構造は、次のように生成されます。
$payment = chr(0) . pack('n', 32) . pack('H*', $device_token) . pack('n', strlen($data)) . $data;
どこ:
$device_token
APNS によって生成および応答された 64 文字のデバイス トークンです。$data
APNS コンテンツ (メッセージなど) のパラメータを含む json エンコードされた配列です。
そのような構造設計の背後にある理由は何ですか?
関数chr()は、ascii で指定された文字を含む 1 文字の文字列を返します。しかしchr(0)
、可視文字を返さないことは次のように証明されています:
echo '['.chr(0).']'; // which prints []
次に、連続する 3 つのpack()関数:
- 最初のもの
pack('n', 32)
は空のスペースを返します - 2 つ目
pack('H*', $device_token)
は、デバイス トークンの 16 進バイナリ表現を返します。 - 3 つ目は、次
pack('n', strlen($data))
のように証明された、目に見えない文字を返します。
$data = array(
'message' => '12345678',
);
$data = json_encode($data);
echo '[' .pack('n', strlen($data)) . ']'; // which returns []
最後はjsonでエンコードされたコンテンツです。
Apple がこの構造を設計する理由は何ですか? それらの目に見えない文字は何ですか?