Installation ID de Firebase (FID)

Firebase reemplaza el token de registro de FCM por el Installation ID. PushHub acepta los dos.

Firebase marcó como obsoleto el token de registro de FCM (getToken, onTokenRefresh) a favor del Firebase Installation ID (FID) (register, onRegistered). Los dos funcionan durante la transición, y Firebase aún no anunció una fecha de retiro del token.

PushHub acepta ambos sin cambios en tu servidor:

Identificador Forma Cómo lo envía PushHub
Token de registro Largo (más de 100 caracteres), con : message.token
Installation ID 22 caracteres (A-Z a-z 0-9 _ -), empieza por c, d, e o f message.fid

Registra el FID igual que un token, con POST /v1/devices, provider: "fcm" y en el campo token. El estado de integración de cada app muestra cuántos dispositivos siguen con el token de registro.

Activar el modo Installation ID en la app

Es una opción de Firebase en la app. Al activarla, Firebase desactiva getToken y onTokenRefresh.

  • Android, en AndroidManifest.xml:

    <meta-data android:name="firebase_messaging_installation_id_enabled" android:value="true" />
  • iOS, en Info.plist: FirebaseMessagingInstallationIdEnabled = YES.

  • Expo (@react-native-firebase/messaging): opción installationIdEnabled: true de su plugin en app.json.

SDK de PushHub

Los SDK de Android, Flutter y React Native / Expo detectan esa opción solos:

  • Activada: usan register() y registran el FID que llega en onRegistered.
  • Desactivada: usan el token de registro.

No hay que cambiar el código de tu app.

  • Capacitor y Cordova: @capacitor/push-notifications y cordova-plugin-push todavía entregan el token de registro. Cuando entreguen el FID, PushHub lo aceptará sin cambios.
  • iOS nativo: usa APNs directo, así que no le afecta. Si tu app usa Firebase en iOS, pasa el FID con PushHub.setFCMToken(fid).

Sin SDK

// Android: con la opción activada, el FID llega a tu FirebaseMessagingService
override fun onRegistered(fid: String) = registerInPushHub(fid)
FirebaseMessaging.getInstance().register()
// Flutter (firebase_messaging 17+)
FirebaseMessaging.instance.onRegistered.listen(registerInPushHub);
await FirebaseMessaging.instance.register();
// React Native (@react-native-firebase/messaging 27+)
import { getMessaging, onRegistered, register } from '@react-native-firebase/messaging';
onRegistered(getMessaging(), registerInPushHub);
await register(getMessaging());