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óninstallationIdEnabled: truede su plugin enapp.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 enonRegistered. - Desactivada: usan el token de registro.
No hay que cambiar el código de tu app.
- Capacitor y Cordova:
@capacitor/push-notificationsycordova-plugin-pushtodaví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());