Backend y cuentas
Analytics, inicio de sesión con Facebook y suscripciones: configuración
Firebase Analytics, Facebook Login y RevenueCat, paso a paso
1Qué conecta esta tarjeta#
El paso Integrar tiene una tarjeta llamada Inicio de sesión, analytics y suscripciones. Conecta TUS PROPIAS cuentas:
- Firebase Analytics: quién usa la app y qué hace
- Facebook Login: un botón Continuar con Facebook, además de Meta App Events
- RevenueCat: suscripciones y compras
Cada interruptor es independiente. Activa solo lo que uses; una app con todos los interruptores desactivados se compila exactamente como antes.
2Firebase Analytics: crea o elige un proyecto#
Abre la consola de Firebase y toca Crear un proyecto (o elige el proyecto que tu app ya usa para las notificaciones push). Deja Google Analytics ACTIVADO cuando te lo pregunten y elige o crea una cuenta de Analytics.
¿Ya tienes un proyecto sin Analytics? Ajustes del proyecto → Integraciones → Google Analytics → Activar.
3Firebase Analytics: añade tu app de Android#
En el proyecto, toca Añadir app → Android.
- Nombre del paquete de Android: escribe el nombre de paquete EXACTO del paso Básico del asistente, por ejemplo com.tunombre.miapp. Una sola letra equivocada y no llegan datos.
- El alias es opcional y el SHA-1 no es necesario para analytics.
Toca Registrar app y luego Descargar google-services.json. Puedes omitir los pasos restantes de Firebase; AppMint añade el SDK por ti.
¿Cambiaste el nombre del paquete más tarde? Añade el nuevo paquete como otra app de Android y vuelve a descargar el archivo.
4Firebase Analytics: actívalo en el asistente#
Paso Integrar → Inicio de sesión, analytics y suscripciones → activa Firebase Analytics. La carga de google-services.json aparece entonces en la tarjeta de notificaciones push: sube allí el archivo. Es el mismo archivo que usan las notificaciones push, así que si ya lo subiste para ellas, has terminado.
Registrar una vista de pantalla por cada cambio de página: cuando está activado, la app registra un screen_view cada vez que tu página cambia de ruta (enlaces, cambios en el historial, atrás y adelante, cambios de #), con la ruta y el título de la página. Ves qué pantallas usa la gente sin escribir código. Déjalo desactivado si tu página envía sus propias llamadas screenView, o las pantallas se contarán dos veces.
5Envía tus propios eventos#
AppMint.analytics.log(name, params) registra un evento. Los nombres usan letras, dígitos y _ (hasta 40 caracteres, empezando por una letra). La respuesta indica qué se envió o por qué no: no_consent, not_configured, invalid_name, reserved_name.
setUserId etiqueta los eventos con tu propio ID de usuario (nunca un correo), setUserProperty define una propiedad como plan y screenView registra tú mismo una pantalla. Con Meta App Events activado, log envía el mismo evento también a Meta.
if (window.AppMint && AppMint.analytics) {
AppMint.analytics.setUserId('u_42');
AppMint.analytics.setUserProperty('plan', 'pro');
const r = await AppMint.analytics.log('add_to_cart', { item_id: 'sku-42', value: 19.99, currency: 'USD' });
if (!r.ok) console.warn('not logged', r.providers);
AppMint.analytics.screenView('Checkout', 'CheckoutPage');
}6Dónde aparecen los datos#
Consola de Firebase → Analytics. Tiempo real muestra usuarios y eventos pocos minutos después de abrir la app. El panel y los informes de Eventos se rellenan en unas 24 horas, por lo que un informe vacío el primer día es normal.
Para ver cada evento en vivo durante las pruebas, conecta el teléfono a un ordenador y ejecuta el comando de abajo; luego abre la app y ve a Analytics → DebugView. Usa tu propio nombre de paquete.
adb shell setprop debug.firebase.analytics.app com.yourname.myapp
# turn it off again:
adb shell setprop debug.firebase.analytics.app .none.7Consentimiento y exclusión#
En una app que muestra anuncios, el formulario de consentimiento de Google también decide para analytics: no se recopila nada hasta que el usuario lo haya respondido y, donde se aplica el RGPD, el usuario debe aceptar. Hasta entonces las llamadas responden no_consent y no se pone nada en cola.
Tu página siempre puede desactivar la recopilación: AppMint.analytics.setEnabled(false) la detiene y se recuerda, y setEnabled(true) la vuelve a activar. Menciona analytics en tu política de privacidad y en el formulario de seguridad de los datos de Play.
document.getElementById('optOut').onchange = (e) =>
AppMint.analytics.setEnabled(!e.target.checked);8Facebook Login: crea la app de Facebook#
Abre Meta for Developers → Mis apps → Crear app. Elige el caso de uso de iniciar sesión con Facebook Login (o añade el producto Facebook Login a una app que ya tengas). Ponle un nombre y tu correo de contacto.
9Facebook Login: añade la URL de redirección#
Facebook Login → Ajustes → URI de redirección de OAuth válidos: añade
https://freewebtoapk.com/fb-return/
exactamente, incluida la última barra. El asistente tiene un botón Copiar URL de redirección para que no tengas que escribirla. Deja activados Inicio de sesión OAuth de cliente e Inicio de sesión OAuth web y luego Guardar cambios.
No hacen falta hash de clave ni configuración de plataforma Android: el inicio de sesión se abre en una pestaña del navegador y vuelve a tu app.
10Facebook Login: ID de la app y token de cliente#
Ajustes de la app → Básico muestra el ID de la app. Ajustes de la app → Avanzado → Seguridad muestra el token de cliente. Pega ambos en los campos de Facebook Login del asistente.
Mientras la app de Facebook está en modo de desarrollo, solo pueden iniciar sesión las personas con un rol en ella (tú y tus probadores). Antes de publicarla, añade la URL de una política de privacidad y un icono en Ajustes de la app → Básico y cambia la app a Activa.
11Facebook Login: inicia sesión de las personas#
AppMint.facebook.login(permissions) abre Facebook y devuelve el token, o ok: false y cancelled cuando el usuario se echa atrás. Envía el token a tu servidor y compruébalo allí. getAccessToken() devuelve el token guardado cuando se inicia la página; logout() cierra la sesión.
Activa Meta App Events para enviar instalaciones, aperturas de la app y tus propios eventos al Administrador de eventos de Meta. AppMint.facebook.logEvent(name, valueToSum, params) envía solo a Meta; sigue la misma regla de consentimiento que analytics.
const r = await AppMint.facebook.login(['public_profile', 'email']);
if (r.ok) {
await fetch('/api/login/facebook', { method: 'POST', body: JSON.stringify({ token: r.accessToken }) });
} else if (!r.cancelled) {
alert('Facebook sign-in failed: ' + (r.message || r.error));
}
AppMint.facebook.logEvent('fb_mobile_purchase', 9.99, { fb_currency: 'USD' });12RevenueCat: crea el proyecto y conecta Google Play#
En RevenueCat, crea un proyecto y añade una app para Google Play Store. Introduce el nombre de paquete EXACTO del paso Básico.
RevenueCat verifica las compras con Google mediante una cuenta de servicio: sigue la propia guía de RevenueCat para crearla en Google Cloud, invítala en Play Console con los permisos financieros que indica y sube sus credenciales JSON a la app de RevenueCat. Google puede tardar un día o más en activar las nuevas credenciales.
13RevenueCat: productos, derecho de acceso y oferta#
- En Play Console, crea tus suscripciones o productos dentro de la app (primero hay que subir la app a un canal de pruebas).
- En RevenueCat → Catálogo de productos, añade los mismos ID de producto.
- Crea un derecho de acceso, por ejemplo pro, y asocia los productos que lo desbloquean.
- Crea una oferta (la predeterminada se muestra como actual) con paquetes como Mensual y Anual que apunten a esos productos.
Tu página lee la oferta actual para dibujar la página de suscripción y comprueba el derecho de acceso para desbloquear funciones.
14RevenueCat: la clave pública de Google#
RevenueCat → Ajustes del proyecto → Claves de API: copia la clave PÚBLICA de tu app de Google Play. Empieza por goog_. Pégala en el campo de RevenueCat del asistente.
Nunca uses una clave secreta (sk_...). Cualquier cosa dentro de una app puede ser leída por quien la descargue, y una clave secreta da control total sobre tu cuenta de RevenueCat.
15RevenueCat: ofertas, compras y derechos de acceso#
configure() inicia RevenueCat (pasa tu propio ID de usuario, o nada para un usuario anónimo). getOfferings() devuelve la página de suscripción, purchase(package) ejecuta la compra de Google Play y getCustomerInfo() indica lo que posee el usuario. restore() recupera compras anteriores. Prueba con una cuenta de probador de licencias y una instalación desde un canal de pruebas de Play.
if (window.AppMint && AppMint.revenuecat) {
await AppMint.revenuecat.configure({ appUserId: 'u_42' });
const off = await AppMint.revenuecat.getOfferings();
if (off.ok && off.current) {
const pkg = off.current.availablePackages[0];
const r = await AppMint.revenuecat.purchase(pkg);
if (r.ok) unlock();
}
const info = await AppMint.revenuecat.getCustomerInfo();
const isPro = info.ok && !!info.customerInfo.entitlements.active.pro;
}