Android (Kotlin)
SDK oficial pushhub-android sobre Firebase Messaging, o integración directa con FCM.
El SDK oficial com.daertech.pushhub:pushhub-android funciona en Android 7.0 (API 24) o superior y se puede usar desde Kotlin o Java. Se apoya en Firebase Messaging y agrega:
- registro del dispositivo, con cola sin conexión;
- permiso de Android 13+ y canal;
- notificaciones con la app abierta, con imagen y botones;
- aperturas y clics reportados;
- usuarios, tags y topics.
Requisitos
- La app registrada en un proyecto de Firebase, con su
google-services.jsonenapp/y el plugincom.google.gms.google-services. - La credencial de Firebase subida en PushHub.
Instalación
// app/build.gradle.kts
dependencies {
implementation("com.daertech.pushhub:pushhub-android:0.1.0")
}
Mientras el SDK no esté en un repositorio Maven público, hay dos opciones:
- Repositorio local: publícalo con
./gradlew :pushhub:publishReleasePublicationToLocalRepositoryensdks/androidy agregamaven { url = uri("…/sdks/android/pushhub/build/repo") }a tus repositorios. - Código fuente: inclúyelo con
includeBuild, como en el ejemploexamples/android.
El SDK trae Firebase Messaging (BoM 35.1.0), su propio FirebaseMessagingService y el permiso POST_NOTIFICATIONS.
Uso
class MiApp : Application() {
override fun onCreate() {
super.onCreate()
PushHub.init(this, PushHubOptions(
appKey = "pk_live_TU_LLAVE_PUBLICA", // solo la llave PUBLICA
androidChannel = AndroidChannel(id = "general", name = "Avisos generales"),
))
PushHub.addNotificationOpenedListener { n ->
// n.deepLink, n.actionId (botón tocado), n.data (tus datos)
}
}
}
// En una actividad (ComponentActivity), cuando el usuario entienda para qué:
PushHub.requestPermission(this) { estado -> /* GRANTED, DENIED */ }
PushHub.identify("cliente-123") // al iniciar sesión
PushHub.setTags(mapOf("plan" to "gold"))
PushHub.subscribe("ofertas")
PushHub.pairTestDevice("483920") { ok -> }
PushHub.logout() // al cerrar sesión
Las aperturas se detectan solas al reanudarse la actividad. Si tu actividad es singleTop o singleTask, llama a setIntent(intent) en onNewIntent(), o a PushHub.handleIntent(intent).
Las llamadas no esperan red: se guardan en una cola persistente. Se envían cuando hay token y conexión, y se reintentan al volver a la app.
Opciones de PushHubOptions
| Opción | Por defecto | Descripción |
|---|---|---|
appKey |
— | Llave pública pk_live_… o pk_test_…. El SDK rechaza llaves secretas. |
appId |
— | Solo si la llave no está limitada a una app. |
autoRegister |
false |
Pedir el permiso en la primera actividad. |
foregroundDisplay |
true |
Mostrar las notificaciones con la app abierta. |
androidChannel |
— | Canal que el SDK crea; debe coincidir con el canal por defecto de la app en PushHub. |
debug |
false |
Logs en Logcat (etiqueta PushHub). |
Si ya tienes un FirebaseMessagingService
Android entrega los mensajes a un solo servicio. Quita el del SDK en tu manifiesto y llama al SDK desde el tuyo:
<service android:name="com.daertech.pushhub.PushHubMessagingService" tools:node="remove" />
override fun onNewToken(token: String) = PushHub.onNewToken(this, token)
override fun onMessageReceived(message: RemoteMessage) = PushHub.onMessageReceived(this, message)
Icono
El icono pequeño debe ser monocromo, blanco sobre transparente; si no, aparece un cuadro blanco. El SDK usa el de Firebase si lo declaras:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" />
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="general" />
Imágenes y botones
- Imágenes: PushHub envía la imagen en el campo
imagede FCM y Android la muestra sola. Con la app abierta, el SDK la descarga y la muestra. - Botones: aparecen en las notificaciones que el SDK muestra con la app abierta. Con la app en segundo plano, Android muestra la notificación sin botones.
Installation ID de Firebase
Si activas el modo Installation ID de Firebase en la app, el SDK lo detecta y registra el FID en lugar del token de registro, sin cambios en tu código. Ver Installation ID de Firebase.
Lo que el SDK reporta
| Evento | Cuándo |
|---|---|
received |
La notificación llega con la app abierta. |
opened |
El usuario toca la notificación. |
clicked |
El usuario toca un botón (incluye actionId). |
permission_granted / permission_denied |
Cambia el permiso. |
Sin SDK (REST)
Con Firebase Messaging, registra el token tú mismo con POST /v1/devices, con platform: "android", provider: "fcm" y framework: "native_android". Al abrir, lee _phid y deepLink de intent.extras y reporta opened a /v1/events.