App de Firebase en el App Store y Google Play: la lista de comprobación completa
Los proyectos de Firebase Studio, Softgen y Databutton se apoyan en Firebase Auth, Firestore, Storage y Hosting. Todo funciona dentro de WebViewGold, pero las ventanas emergentes de inicio de sesión, el proveedor de Apple, la eliminación de datos y los formularios de privacidad exigen decisiones conscientes. Repasa esta lista antes de subir la primera compilación.
Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.
Garantía de aprobación – o te devolvemos el dinero en 14 días
Sin programar
Pago único, actualizaciones gratuitas
Soporte humano 24/7
Hecho en Alemania desde 2014 · ISO 27001
9:41
Tu app
Tu appYa en tu bolsillo
App Store · Google Play Aprobada
1. Inicio de sesión: ¿popup, redirect o helper?
La mayor parte del código de Firebase generado llama a signInWithPopup. En un navegador de escritorio eso abre una segunda ventana y devuelve el resultado; dentro de una WKWebView o de la WebView de Android, el popup no tiene una forma fiable de volver, así que el inicio de sesión se queda colgado. Cambia el flujo de la app a signInWithRedirect y gestiona getRedirectResult al cargar.
El inicio de sesión por redirección tiene su propia trampa en las plataformas de Apple: WebKit bloquea el almacenamiento de terceros, así que el authDomain predeterminado (yourproject.firebaseapp.com) puede perder la sesión durante el ida y vuelta. La solución que recomienda Firebase es usar tu propio dominio como authDomain: aloja la app en Firebase Hosting con tu dominio propio para que /__/auth/handler sea del mismo origen, y añade ese dominio en Authentication → Settings → Authorized domains. Después define ese mismo dominio como URL de inicio en WebViewGold.
Google como proveedor añade el conocido bloqueo de WebView ("disallowed_useragent"). El Social Login Helper de WebViewGold lo resuelve: define google_login_helper_triggers en Config.swift y GOOGLE_LOGIN_HELPER_TRIGGERS en Config.java con los prefijos de accounts.google.com. El inicio de sesión con correo y contraseña o con enlace por correo no necesita nada de esto.
2. Proveedor de Apple (Directriz 4.8)
Obligatorio en cuanto se ofrece Google, Facebook u otro inicio de sesión de terceros.
Portal de Apple Developer
Activa Sign in with Apple en tu App ID, crea un Services ID con tu authDomain como sitio web y https://YOUR-AUTH-DOMAIN/__/auth/handler como URL de retorno, y crea una clave de Sign in with Apple (.p8).
Consola de Firebase
Authentication → Sign-in method → Apple: introduce el Services ID, el Team ID de Apple, el Key ID y la clave privada. Firebase genera el client secret por ti, así que no tienes que renovarlo cada seis meses como con otros backends.
Código de la app web
const provider = new OAuthProvider("apple.com"); provider.addScope("email"); provider.addScope("name"); signInWithRedirect(auth, provider). Dale al botón de Apple el mismo peso visual que al de Google.
Nada que configurar en WebViewGold
El flujo de appleid.apple.com se detecta y se gestiona automáticamente. Prueba en un iPhone real mediante TestFlight; el Simulador no es un juez fiable de las redirecciones de OAuth.
3. Eliminación de los datos del usuario
Ambas tiendas exigen que los usuarios puedan eliminar su cuenta desde dentro de la app, y Google además quiere una página web para las solicitudes de eliminación.
Instala la extensión oficial de Firebase "Delete User Data". Elimina los documentos del usuario, los nodos de Realtime Database y los archivos de Storage en las rutas que configures cada vez que se elimina un usuario de Auth.
Botón dentro de la app: llama a deleteUser(auth.currentUser). Firebase exige para ello un inicio de sesión reciente, así que vuelve a autenticar primero (petición de contraseña o una nueva redirección de OAuth) y gestiona con elegancia el error auth/requires-recent-login.
Alternativa para datos complejos: una Cloud Function invocable que use el Admin SDK para eliminar datos de varias colecciones y después auth().deleteUser(uid); la extensión sigue limpiando lo que hayas configurado.
Página pública /delete-account en tu dominio que explique el flujo dentro de la app y ofrezca un formulario de contacto; pega la URL en el formulario Data safety de la Play Console y menciona la eliminación en tu política de privacidad.
¡Gran trabajo! Nunca tuve que usar código para nada, pero logré trabajar con esto y tener mi App lista. ¡Fácil y rápido! ¡También con gran ayuda de los creadores!
4. Reglas de Firestore que superan a un revisor y a un hacker
Los proyectos generados suelen empezar con reglas de modo de prueba que lo permiten todo durante 30 días. Firebase te avisa por correo cuando están a punto de caducar, y entonces la app se rompe en producción. Sustitúyelas antes del envío por reglas que solo den acceso al propietario; esta es una forma mínima y habitual.
javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Cada usuario es dueño de exactamente un documento de perfil
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
// Los items pertenecen al usuario que los creó
match /items/{itemId} {
allow read: if request.auth != null && resource.data.ownerId == request.auth.uid;
allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
allow update, delete: if request.auth != null && resource.data.ownerId == request.auth.uid;
}
// Todo lo demás se deniega por defecto
}
}
5. Hosting, push y dominios
Tema
Qué hacer
Lado de WebViewGold
Dominio propio en Hosting
Firebase Hosting → Add custom domain, configura los registros DNS y espera al certificado. Usa este dominio como authDomain y como Site URL en las plantillas de correo.
URL de inicio en Config.swift / Config.java o en el Cloud Builder
Push: FCM directamente
Registra el bundle ID de iOS y el nombre del paquete de Android en el proyecto de Firebase, descarga GoogleService-Info.plist y google-services.json y sube una clave de APNs en Cloud Messaging.
kFirebasePushEnabled (iOS) y FIREBASE_PUSH_ENABLED (Android); firebaseTopic opcional; el token del dispositivo está disponible como firebaseplayerid tras getfirebaseplayerid://. Documentación: push en iOS, push en Android
Push: OneSignal en su lugar
Para segmentos y un panel de campañas sin Cloud Functions; convive con Firebase sin conflictos.
6. Data safety y App Privacy para las señales de Firebase
Google compara las señales de los SDK del binario con tus respuestas; Apple espera que declares todo lo que hace la app, contenido web incluido.
Firebase Auth: dirección de correo e ID de usuario, vinculados al usuario. Decláralos en "Información personal" (Play) y en "Información de contacto" más "Identificadores" (Apple).
Contenido de usuario en Firestore y Storage: "Actividad en la app" / "Contenido del usuario". Si los usuarios suben fotos, indícalo.
Push de FCM: el token del dispositivo cuenta como identificador de dispositivo para la funcionalidad de la app. Si usas OneSignal en su lugar, se aplica lo mismo.
Google Analytics, si tu app web lo carga: datos de uso para analítica; no es seguimiento en el sentido de Apple salvo que se vincule con redes publicitarias. Crashlytics en Android (TRACKING_EVENT): registros de fallos y diagnósticos.
No respondas "no se recopilan datos" para pasar más rápido; una discrepancia con las señales de los SDK es un rechazo habitual en Play (consulta la guía sobre discrepancias en Data safety).
Preguntas frecuentes
¿Tengo que añadir los SDK nativos de Firebase al proyecto de WebViewGold?
No. Tu app web sigue usando el SDK de JavaScript. Los componentes nativos de Firebase solo intervienen para push o Crashlytics, y WebViewGold los incluye tras un interruptor de configuración.
¿Por qué el inicio de sesión con Google funciona en Chrome pero no en mi app?
Google bloquea OAuth dentro de WebViews incrustadas. El Social Login Helper de WebViewGold abre el paso de Google en una ventana que Google acepta y devuelve el resultado a tu app.
¿Funciona en la app la persistencia sin conexión de Firestore?
Sí, IndexedDB está disponible en WKWebView y en la WebView de Android. Aun así, activa la pantalla sin conexión de WebViewGold para la primera carga, cuando todavía no existe caché.
¿Cómo envío un push a un usuario concreto?
Guarda el token de getfirebaseplayerid:// (o el ID de suscripción de OneSignal) en el documento de Firestore del usuario y envía desde una Cloud Function con el Admin SDK o con la API REST de OneSignal.
Tres formas de llevar tu app a las tiendas
El mismo resultado, con distinta cantidad de trabajo por tu parte. Las tres incluyen la garantía de aprobación y soporte humano 24/7.
Hazlo tú mismo
$109 por plataforma, pago único
La licencia de WebViewGold: un proyecto de Xcode o Android Studio listo para usar. Pega tu URL, define nombre e icono, activa funciones, compila y envía. Actualizaciones gratuitas para siempre.
Sin Mac, sin Xcode, sin Android Studio: configura en el navegador, compilamos ambas apps en la nube y las entregamos a App Store Connect y a Play Console.
Envíanos tu URL y tu icono. Nuestro equipo configura, compila y entrega tu app en 72 horas, en marca blanca y con los proyectos fuente. Ambas plataformas por $1,158.
Los reembolsos se conceden bajo las condiciones indicadas en nuestras FAQ: un rechazo por motivos ajenos al contenido por parte de Apple y/o Google, reclamado dentro de los 14 días posteriores a la compra.