0

これまで、IOS 用の apple-mdm-ota-server を作成しました。デバイスは、次のものをサーバーに送信します (plist/xml の形式で)。

-Push Magic Token -Device Token (b64 形式 oO) -PN-Topic (com.apple.mgmt.xxx) -UDID (16 進コード) -UnlockToken (非常に長い b64 でエンコードされたもの)

次のコンテンツを Apple からのプッシュ通知に送信する必要があります。

{"mdm":"pushMagic"}

Pushmagic = プッシュ マジック トークン

apns ソケットに書き込む必要があるデータをどのように作成する必要がありますか? 他のプッシュ通知で動作するものを試しましたが、これは動作しません。何も起こっていません:-(。

$apns_url = 'gateway.push.apple.com';  

[...]

$apns = stream_socket_client('ssl://' . $apns_url . ':' . $apns_port,
$error, $error_string, 2, STREAM_CLIENT_CONNECT, $stream_context);

fwrite($apns, chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ',
'', $wellWrittenToken)) . chr(0) . chr(strlen($mdmInitialPush)) .
$mdmInitialPush);

[...]

$error is 0. $wellwrittentoken = 16 進コードのデバイス トークン $apns_xx - ssl は機能しているようです。なぜなら、エラー メッセージが表示されなかったからです $mdminitialpush - 送信したいメッセージ

4

2 に答える 2

4

ストリームの設定時に APNS キーが含まれていたことがわかりませんでした。これが(大まかに)私たちがしていることです:

$apns_certkey_path = '/path/to/cert/and/key/file' ;
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apns_certkey_path);

$apns = stream_socket_client(
  'ssl://' . $apns_url . ':' . $apns_port,
  $error,
  $errorString,
  2, // timeout
  STREAM_CLIENT_CONNECT,
  $streamContext
);

$payload = json_encode(array('mdm' => $PushMagic));
$apnsMessage = chr(0)  . chr(0)
             . chr(32) . base64_decode($ApnsTokenB64)
             . chr(0)  . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
于 2012-10-24T13:11:21.533 に答える