He desarrollado una aplicación web con FCM Push Notifications.
Está enviando y funcionando bien, excepto el siguiente problema que tengo:
Cuando alguien se suscribe, el token que recibo por la respuesta, lo guardo en mi base de datos mySQL con otra información de usuario que quiero.
Cuando alguien se da de baja, después de recibir una respuesta exitosa de darse de baja, elimino la entrada en mi base de datos.
PERO cuando alguien se da de baja por sí mismo al no usar mi aplicación web sino al cliente (Chrome, Firefox, etc.) y al eliminar y no recibir más notificaciones de mi aplicación web, entonces no sé si lo hizo para eliminarlo de mi base de datos.
No veo que haya una función FCM que le proporcione todos los tokens activos para verificarlos y compararlos con mi base de datos.
¿Hay alguna forma de eliminar de mi base de datos todos los tokens inactivos?
¡Gracias!
Uno puede validarlos en lotes de 500 ID de registro cada uno:
use Kreait\Firebase\Factory; use Kreait\Firebase\Contract\Messaging; use Kreait\Firebase\Exception\MessagingException; use Kreait\Firebase\Exception\FirebaseException; class SomeController { /** Constructor */ public function __construct() { $factory = (new Factory)->withServiceAccount(getenv('GOOGLE_APPLICATION_CREDENTIALS')); $this->messaging = $factory->createMessaging(); } /** * It validates device registration ID. * * @param string|string[] $token * @return array|bool|Exception|MessagingException|FirebaseException the validation results. */ public function validate_fcm_token( string|array $token=[] ): bool|Exception|MessagingException|array|FirebaseException { if ($token == null|| is_array($token) && (sizeof($token) === 0 || sizeof($token) > 500)) {return false;} else if (is_string($token)) {$token = [ $token ];} try { return $this->messaging->validateRegistrationTokens($token); } catch ( MessagingException | FirebaseException $e ) { return $e; } } } Esto generalmente divide la matriz de entrada en tres matrices de salida, de las cuales una se llama invalid .
... ver también la documentación correspondiente .