Saltar al contenido
WebViewGold Del vibe coding a la App Store
Español
Consigue WebViewGold

Checklists de backend

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

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.

  1. 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).

  2. 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.

  3. 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.

  4. 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!

Lucas DuBois · CodeCanyon

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

TemaQué hacerLado de WebViewGold
Dominio propio en HostingFirebase 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 directamenteRegistra 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 lugarPara segmentos y un panel de campañas sin Cloud Functions; convive con Firebase sin conflictos.oneSignalID + kPushEnabled / PUSH_ENABLED; comparativa en la guía de proveedores de push
Deep linksFirebase Dynamic Links se ha discontinuado. Usa Universal Links y App Links en tu propio dominio para los enlaces de correo y para compartir.Associated Domains + ShowExternalLink (iOS), IS_DEEP_LINKING_ENABLED (Android)

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.

Ver planes en la página principal

Full Service

$698 por plataforma $798

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.

Detalles del Full Service Con tecnología de WeSetupYourWebViewApp

Precios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.

¿Listo para lanzar tu app?

Garantía de aprobación en App Store & Google Play – o te devolvemos el dinero en 14 días

¿Prefieres delegarlo? Full Service: configuramos, compilamos y entregamos en 72 horas, desde $698 por plataforma. ¿Preguntas? Chatea con nosotros 24/7.

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.