Apple push notification with cURL
Here is the code for device token and json message,I think this will help you.
$url = 'https://gateway.sandbox.push.apple.com:2195';$cert = 'AppCert.pem';$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_SSLCERT, $cert);curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "passphrase");curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}');$curl_scraped_page = curl_exec($ch);
This code works
$deviceToken = '...';$passphrase = '...';$message = '...';$ctx = stream_context_create();stream_context_set_option($ctx, 'ssl', 'local_cert', 'xxx.pem');stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);$body['aps'] = array('alert' => $message,'sound' => 'default');$payload = json_encode($body);$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;$result = fwrite($fp, $msg, strlen($msg));fclose($fp);