Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is what I have done <a href="https://stackoverflow.com/q/14563097/1868660">here</a> </p> <pre><code>&lt;?php set_time_limit(0); $root_path = "add your root path here"; require_once($root_path."webroot\cron\library\config.php"); require_once($root_path."Vendor\ApnsPHP\Autoload.php"); global $obj_basic; // Basic settings $timezone = new DateTimeZone('America/New_York'); $date = new DateTime(); $date-&gt;setTimezone($timezone); $time = $date-&gt;format('H:i:s'); //Get notifications data to send push notifications $queueQuery = " SELECT `notifications`.*, `messages`.`mes_message`, `messages`.`user_id`, `messages`.`mes_originated_from` FROM `notifications` INNER JOIN `messages` ON `notifications`.`message_id` = `messages`.`mes_id` WHERE `notifications`.`created` &lt;= NOW()"; $queueData = $obj_basic-&gt;get_query_data($queueQuery); if(!empty($queueData)) { // Put your private key's passphrase here: $passphrase = 'Push'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'server_certificates_bundle_sandbox.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $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); echo '&lt;br&gt;'.date("Y-m-d H:i:s").' Connected to APNS' . PHP_EOL; foreach($queueData as $val) { // Put your device token here (without spaces): $deviceToken = $val['device_token']; // Create message // Get senders name $sql = "SELECT `name` FROM `users` WHERE id =".$val['user_id']; $name = $obj_basic-&gt;get_query_data($sql); $name = $name[0]['name']; $message = $name." : "; // Get total unread messaged for receiver $query = "SELECT COUNT(*) as count FROM `messages` WHERE mes_parent = 0 AND user_id = ".$val['user_id']." AND mes_readstatus_doc != 0 AND mes_status = 1"; $totalUnread = $obj_basic-&gt;get_query_data($query); $totalUnread = $totalUnread[0]['count']; $message .= " This is a test message."; // Create the payload body $body['aps'] = array( 'alert' =&gt; $message, 'badge' =&gt; $totalUnread, 'sound' =&gt; '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)); if (!$result) { echo '&lt;br&gt;'.date("Y-m-d H:i:s").' Message not delivered' . PHP_EOL; } else { $sqlDelete = "DELETE FROM `notifications` WHERE id = ".$val['id']; $query_delete = $obj_basic-&gt;run_query($sqlDelete,'DELETE'); echo '&lt;br&gt;'.date("Y-m-d H:i:s").' Message successfully delivered' . PHP_EOL; } } // Close the connection to the server fclose($fp); echo '&lt;br&gt;'.date("Y-m-d H:i:s").' Connection closed to APNS' . PHP_EOL; } else { echo '&lt;br&gt;'.date("Y-m-d H:i:s").' Queue is empty!'; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload