¿Cómo enviar una notificación push a más de 1000 usuarios que utilizan firebase en Android?
Estoy recibiendo mensaje de error siguiente al enviar la notificación del empuje a más de 1000 usuarios:
"firebase Número de mensajes a granel (1082) excede el máximo permitido (1000)"
- ¿Cómo identificar imágenes similares a pesar de haber sido recortadas?
- Solicitud de Android KSOAP2 al servidor SOAP de PHP
- Cómo enviar una notificación desde el servidor PHP a la aplicación Android
- Md5 con Android y PHP
- Subiendo la imagen de android a un servidor PHP
He googled el problema y encontré que FCM puede enviar solamente 1000 mensaje por la petición. Solución: Divida la lista del remitente en php, pero por desgracia soy nuevo en php e incapaz de lograr el bucle.
Mi script php es:
<?php function send_notification ($tokens, $message) { $url = 'https://fcm.googleapis.com/fcm/send'; $fields = array( 'registration_ids' => $tokens, 'data' => $message, 'click_action' => ACTIVITY_CIRCULAR ); $headers = array( 'Authorization:key = <MY_KEY> ', 'Content-Type: application/json' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($ch); if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } curl_close($ch); return $result; } $conn = mysqli_connect("localhost","username","password","databse_name"); $sql = " Select Token From users"; $result = mysqli_query($conn,$sql); $tokens = array(); if(mysqli_num_rows($result) > 0 ){ while ($row = mysqli_fetch_assoc($result)) { $tokens[] = $row["Token"]; } } mysqli_close($conn); $message = array("message" => "Hi This Arbaz Alam And You are using Android App Thanks."); $message_status = send_notification($tokens, $message); echo $message_status; ?>
¿Puede por favor ayudarme en este sentido y proporcionarme un script push_notification.php que dividirá a los usuarios.
He tratado de dividir el mensaje en trozos de 1000 pero no consigo ningún éxito:
<?php function send_notification ($tokens, $message) { $url = 'https://fcm.googleapis.com/fcm/send'; $fields = array( 'registration_ids' => $tokens, 'data' => $message ); $headers = array( 'Authorization:key = <MY-KEY>', 'Content-Type: application/json' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($ch); if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } curl_close($ch); return $result; } function send_message($tokens) { $message = array("message" => "AKTU Even Semester Result is updated"); $message_status = send_notification($tokens, $message); echo $message_status; } $conn = mysqli_connect("localhost","username","password","database_name"); $sql = " Select Token From users"; $result = mysqli_query($conn,$sql); $tokens = array(); $num_of_rows = mysqli_num_rows($result); echo "$num_of_rows"; if(mysqli_num_rows($result) > 0 ){ while ($row = mysqli_fetch_assoc($result)) { $tokens[] = $row["Token"]; if(count($tokens) == 1000){ send_message($tokens); $tokens = array(); } } } send_message($tokens); mysqli_close($conn); ?>
- Android MediaPlayer Streaming desde un redireccionamiento PHP no funciona-out!
- GCM con PHP (Google Cloud Messaging)
- Envíe archivos grandes (de vídeo) desde Android a PHP Server
- Codificación PHP en Android
- Tratando de devolver datos de PHP con JSON a Android ...
- ¿Dónde ejecutar algoritmos complejos? Lado del servidor o lado del cliente?
- ¿Dónde poner mi archivo php?
- Conectar aplicaciones de Android a la base de datos mysql
Hola puedes usar array_chunk para enviar la notificación 1000
if(mysqli_num_rows($result) > 0 ){ while ($row = mysqli_fetch_assoc($result)) { $tokens[] = $row["Token"]; } } mysqli_close($conn); $message = array("message" => "Hi This Arbaz Alam And You are using Android App Thanks."); $regIdChunk=array_chunk($tokens,1000); foreach($tokens as $RegId){ $message_status = send_notification($RegId, $message); } echo $message_status;
Por favor, cambie esto en su código.
- Agrupación de pruebas roboeléctricas utilizando junit Category en un proyecto gradle de Android
- mapa de bits de Android a matriz de bytes sin compresión