¿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)"
- Enviar notificación push mediante la notificación php y ionic alfa push
- enviar notificación a android tan pronto como la actualización tenga lugar en la base de datos MySQL
- ¿Existe un equivalente de ucwords en java?
- ¿Cómo administrar tokens de sesión entre varias aplicaciones de cliente (android / iphone) desde el lado del servidor php y mysql?
- No se puede insertar correctamente caracteres griegos en la base de datos mysql
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); ?>
- Codificación / decodificación de datos entre php / java para android
- Mejor tutorial para android PHP y mysql
- Cómo leer datos fragmentados de archivo de archivo Gap de teléfono en Android
- Mensaje de error de PHP GCM MismatchSenderId
- cómo obtener el archivo utilizando php funciones nativas y Android
- Android no procesar objeto JSON
- ¿Cómo administrar sesión para un usuario conectado desde una aplicación móvil en PHP?
- La página principal de WAMP Server se abre bien en android, pero las páginas web desplegadas no se cargan
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