¿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)"

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); ?> 

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.

  • SHA1 en Java y PHP con resultados diferentes
  • C2DM con PHP usando OAuth2.0 (ClientLogin está obsoleto!)
  • Cómo guardar la imagen a través de la captura en android a php?
  • Cómo validar las credenciales de inicio de sesión de usuario en android con PHP, MySql con la ayuda de json
  • Configurar una base de datos de servidor en línea y codificar mi aplicación nativa de Android para interactuar con ella
  • Cómo crear un servidor para la comunicación con una aplicación de Android
  • Autenticación de Firebase en el sitio web de wordpress
  • Cargar archivo de imágenes múltiples mediante HttpURLConnection
  • Symfony2 - Cómo comprobar si estamos siendo llamados desde un dispositivo móvil
  • Android JSON a PHP Server y volver
  • Validación de licencia de Android Offload a un servidor de confianza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.