How to send Push Notification to multiple devices?

前端 未结 3 1562
逝去的感伤
逝去的感伤 2020-12-23 15:01

This is the first time I am using push notification in my App. I have gone through sample applications along with books and I got how to send push notification to a single d

3条回答
  •  难免孤独
    2020-12-23 15:18

    This is what I have done here

    setTimezone($timezone);
                $time =  $date->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` <= NOW()";
    
                $queueData = $obj_basic->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 '
    '.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->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->get_query_data($query); $totalUnread = $totalUnread[0]['count']; $message .= " This is a test message."; // Create the payload body $body['aps'] = array( 'alert' => $message, 'badge' => $totalUnread, '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)); if (!$result) { echo '
    '.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->run_query($sqlDelete,'DELETE'); echo '
    '.date("Y-m-d H:i:s").' Message successfully delivered' . PHP_EOL; } } // Close the connection to the server fclose($fp); echo '
    '.date("Y-m-d H:i:s").' Connection closed to APNS' . PHP_EOL; } else { echo '
    '.date("Y-m-d H:i:s").' Queue is empty!'; }

提交回复
热议问题