registro pricing notificaciones google gcm fcm android firebase firebase-cloud-messaging

pricing - push firebase android



No se recibió la última clave de colapso de Firebase Cloud Messaging(¿tasa limitada?) (1)

Tengo un servicio que usa Firebase Cloud Messaging para comunicarse con sus clientes de Android utilizando mensajes de datos FCM con el conjunto de parámetros collapse_key . De la documentación sobre claves colapsables:

Cuando hay un mensaje más reciente que representa un hilo más antiguo, el mensaje relacionado se vuelve irrelevante para la aplicación cliente y FCM reemplaza el mensaje anterior. Por ejemplo enviar-a-sincronizar, o mensajes de notificación obsoletos.

Esto es lo que estoy buscando. No necesito todas las actualizaciones, solo se necesita la última. Pero, lo necesito lo antes posible si el usuario está en línea .

Sin embargo, obtengo una limitación de velocidad extraña que no da como resultado ningún código de error HTTP. Es bastante fácil de reproducir simplemente haga 20 mensajes de datos consecutivos y monitoree el android FirebaseMessagingService.onMessageReceived :

for i in {1..20}; do curl -v -X POST --header "Authorization: key=$SERVER_KEY" / --Header "Content-Type: application/json" / https://fcm.googleapis.com/fcm/send / -d "{/"to/":/"$CLIENT_TOKEN/", / /"data/":{/"counter/":/"$i/"}, / /"priority/":/"high/", / /"collapse_key/": /"test/" / }" done

El script bash de arriba es un poco difícil de leer, pero tengo una variable de counter que me interesa.

Después de unos pocos mensajes recibidos ( counter=~10 ) se detiene y necesita alternar el estado de la red para obtener el último mensaje con el counter=20 . El último mensaje también aparece después de unos minutos (normalmente ~ 10 minutos) cuando se solicita un check-in de firebase (?).

La eliminación de collapse_key desde el comando curl anterior da como resultado que se reciben los 20 mensajes (donde counter={1..20} ).

Entonces, la pregunta : ¿Es esto un error? O estoy cerrando (/ tasa limitada) porque "abuso" de la interfaz (ya que todas las solicitudes devuelve una respuesta de 200 , pensé que estaba bien).


<?php #API access key from Google API''s Console define( ''API_ACCESS_KEY'', ''YOUR-SERVER-API-ACCESS-KEY-GOES-HERE'' ); $registrationIds = $_GET[''id'']; #prep the bundle $msg = array ( ''body'' => ''Body Of Notification'', ''title'' => ''Title Of Notification'', ''icon'' => ''myicon'',/*Default Icon*/ ''sound'' => ''mySound''/*Default sound*/ ); $fields = array ( ''to'' => $registrationIds, ''notification'' => $msg ); $headers = array ( ''Authorization: key='' . API_ACCESS_KEY, ''Content-Type: application/json'' ); #Send Reponse To FireBase Server $ch = curl_init(); curl_setopt( $ch,CURLOPT_URL, ''https://fcm.googleapis.com/fcm/send'' ); curl_setopt( $ch,CURLOPT_POST, true ); curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) ); $result = curl_exec($ch ); curl_close( $ch ); #Echo Result Of FireBase Server echo $result;

Pon tus datos en la sección de cuerpo.