Skip to content

Instantly share code, notes, and snippets.

@kmccarth
Created December 1, 2017 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmccarth/c1df8110ff5a139ba329c9002fea0201 to your computer and use it in GitHub Desktop.
Save kmccarth/c1df8110ff5a139ba329c9002fea0201 to your computer and use it in GitHub Desktop.
<?php
// Sends Push notification for iOS users
public function iOS($data, $devicetoken)
{
$deviceToken = $devicetoken;
$ctx = stream_context_create();
// ck.pem is ourr cert file
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', self::$passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx
);
if (!$fp) {
exit("Failed to connect: $err $errstr" . PHP_EOL);
}
// Create the payload body
$body['aps'] = [
'alert' => [
'title' => $data['mtitle'],
'body' => $data['mdesc'],
],
'sound' => 'default'
];
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
// Close the connection to the server
fclose($fp);
if (!$result) {
return 'Message not delivered' . PHP_EOL;
} else {
return 'Message successfully delivered' . PHP_EOL;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment