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

Rechazo en App Store

Directriz 5.1.1(v) (inicio de sesión con cuenta): cuándo puede tu app exigir login y cómo añadir un modo invitado

Si tu app obliga a crear una cuenta antes de poder usar funciones que no tienen nada que ver con una cuenta, Apple la rechaza por la 5.1.1(v). Los creadores de apps con IA ponen por defecto toda la app detrás de un login, así que es algo habitual. La solución: abre las partes que no necesitan cuenta, mantén el login para las que sí la necesitan y deja claro en las notas de revisión qué es cada cosa.

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

Qué dice la 5.1.1(v)

La parte de la Directriz 5.1.1 sobre el inicio de sesión con cuenta dice que una app sin funciones significativas basadas en una cuenta debe permitir que se use sin iniciar sesión. Las apps no pueden exigir información personal para funcionar salvo que sea directamente relevante para la funcionalidad principal o lo exija la ley. Las apps que permiten crear una cuenta deben ofrecer la eliminación de la cuenta dentro de la app. Y si la función principal no está ligada a una red social concreta, la gente debe poder usar la app sin iniciar sesión en una; obtener datos del perfil, compartir e invitar a amigos no cuentan como funciones principales.

Las demás partes de la 5.1.1 (política de privacidad, textos de propósito, minimización de datos) se tratan en la guía de privacidad de la 5.1.1. Esta página trata del muro de login.

Qué suele decir el mensaje de rechazo

La nota suele decir que la app exige a los usuarios registrarse o iniciar sesión antes de poder acceder a funciones que no se basan en una cuenta, y sugiere permitir el uso libre de esas funciones y exigir el registro solo para las específicas de la cuenta. Una variante frecuente dice que la app exige información personal, como un número de teléfono, la fecha de nacimiento o el género, que su función principal no necesita. Otra variante tiene que ver con las compras: la app obliga a registrarse antes de comprar In-App Purchases que no se basan en una cuenta.

Qué funciones pueden ir detrás de un login

Función¿Basada en una cuenta?¿Detrás de un login?
Explorar un catálogo, leer artículos, ver recetasNoNo, hazlo público
Calculadoras, conversores, generadores, una demo de IA gratuita y limitadaNoNo, o con una sesión de invitado
Favoritos, historial, sincronización entre dispositivosSíSí; pídelo cuando el usuario guarde algo
Publicar, chatear, seguir a otros usuariosSíSí
Pedidos, reservas, facturas, espacios de trabajo de equipoSíSí
Una app para miembros, empleados o clientes actuales de un servicioSí, la cuenta es lo esencialSí; explícalo en las notas de revisión y facilita una cuenta demo
Una suscripción que también funciona en la webSí, multiplataformaSí; indícalo en las notas de revisión

Mi WebView de iOS finalmente está aprobada. ¡Gracias!

Taha Farooqui · CodeCanyon

Por qué las apps creadas con IA chocan con el muro de login

Un auth guard alrededor de todo

Los proyectos base de Lovable, Bolt y v0 suelen envolver todo el router en una ruta protegida, así que la primera pantalla de la app es un formulario de inicio de sesión.

URL de inicio en /login o /dashboard

La página de marketing es la parte pública de tu sitio web, así que mucha gente pone en webviewurl el área de la app, que redirige directamente al login.

Formularios de registro que piden demasiado

Los campos de teléfono, fecha de nacimiento, género y empresa generados "por si acaso" son información personal que la función principal no necesita.

Login solo con redes sociales

Ofrecer únicamente "Continuar con Google" significa que nadie entra sin una cuenta social. Añade login por correo o Sign in with Apple, y plantéate una vía para invitados.

Añade una vía para invitados sin rehacer tu app

  1. Marca cada función como pública o solo para cuentas

    Repasa cada pantalla. Normalmente, descubrir y leer es público; guardar, publicar, las compras ligadas a la cuenta y los datos personales son solo para cuentas.

  2. Apunta la app a una página de inicio pública

    Pon en webviewurl de Config.swift una página que funcione sin login, como yourdomain.com/app o /explore, no /login. Cambiarlo requiere una compilación nueva.

  3. Mueve el auth guard a las rutas de la cuenta

    Las rutas públicas se muestran a todo el mundo; solo las rutas de la cuenta redirigen al login (código más abajo). Pon "Iniciar sesión" en la cabecera o en el primer guardado, no delante del contenido.

  4. Usa sesiones anónimas cuando los invitados necesiten estado

    Si los invitados deben poder guardar su progreso, usa los inicios de sesión anónimos de Supabase, la autenticación anónima de Firebase o el almacenamiento local, y convierte al invitado en una cuenta completa al registrarse para que no se pierda nada. Protege los registros anónimos con un captcha y con row-level security; la lista de comprobación de Supabase recoge los ajustes.

  5. Recorta el formulario de registro

    Correo y contraseña (o Sign in with Apple), más un nombre si de verdad lo necesitas. Pide todo lo demás más adelante, cuando una función lo necesite, y marca los campos opcionales como opcionales.

  6. Mantén la eliminación de cuenta y la cuenta demo

    Crear cuentas sigue exigiendo la eliminación dentro de la app (guía de eliminación de cuenta), y las funciones con cuenta siguen necesitando una cuenta demo para la revisión (guía de la cuenta demo). Mantén deletecache en false para que los usuarios con sesión iniciada sigan conectados.

Primero las rutas públicas, login solo donde importa

Ejemplo con React Router, tal como lo generan la mayoría de los creadores con IA, más una sesión de invitado de Supabase para guardar.

javascript
// Antes (proyecto base típico de IA): todas las rutas detrás de <RequireAuth />
// <Route element={<RequireAuth />}> ...todas las rutas... </Route>

// Después: descubrimiento público, funciones de la cuenta detrás del guard
<Routes>
  <Route path="/" element={<Explore />} />                {/* no necesita cuenta */}
  <Route path="/recipes/:id" element={<Recipe />} />      {/* no necesita cuenta */}
  <Route path="/login" element={<Login />} />
  <Route element={<RequireAuth />}>
    <Route path="/favorites" element={<Favorites />} />    {/* basada en la cuenta */}
    <Route path="/settings/account" element={<Account />} />
  </Route>
</Routes>

// Un invitado toca "Guardar": inicia una sesión anónima y conviértela más tarde
async function saveAsGuest(recipeId) {
  const { data } = await supabase.auth.getSession();
  if (!data.session) await supabase.auth.signInAnonymously();
  await supabase.from("favorites").insert({ recipe_id: recipeId }); // user_id toma por defecto auth.uid()
  showBanner("Guardado. Crea una cuenta gratuita para tener tus favoritos en todos tus dispositivos.");
}
// Conversión posterior: supabase.auth.updateUser({ email }) convierte al usuario anónimo en uno permanente

Prompt: abre la app a los invitados

Deja que la IA haga la reestructuración, pero revisa su lista de rutas públicas y solo para cuentas antes de que cambie el código.

Prompt para Lovable, Bolt, v0, Cursor o Claude Code
Reestructura la autenticación para la Directriz 5.1.1(v) del App Store.
1) Enumera todas las rutas y clasifícalas como públicas (funcionan sin cuenta) o solo para cuentas (guardar, publicar, compras ligadas a la cuenta, datos personales). Enséñame la lista antes de cambiar el código.
2) Quita el auth guard global y aplícalo solo a las rutas solo para cuentas.
3) Convierte / en una página de inicio pública que muestre el contenido principal sin login.
4) Cuando un invitado intente una acción solo para cuentas, muestra una hoja amable: "Crea una cuenta gratuita para guardar esto", con Sign in with Apple, registro por correo y una opción "Ahora no".
5) Usa el inicio de sesión anónimo de Supabase para los invitados que necesiten guardar estado, y conviértelos en una cuenta permanente al registrarse sin perder datos. Mantén row-level security en todas las tablas.
6) Reduce el formulario de registro a correo, contraseña y un nombre opcional. Quita teléfono, fecha de nacimiento y género salvo que una función los necesite.
7) Mantén el flujo actual de Eliminar cuenta en los ajustes.

Plantilla de respuesta para el Centro de resolución

La opción A si abriste la app; la opción B si el login es realmente imprescindible. En ambos casos, sé concreto. La plantilla se queda en inglés porque App Review lee en inglés.

Respuesta en el Centro de resolución (elige la opción A o B)
Hello App Review team,

Thank you for reviewing [App name] [version] ([build]).

[Option A: guest access added]
Users can now [browse / read / use the calculator] without an account. The app opens on [Explore], and an account is requested only when a user wants to [save favorites / post / sync across devices], which are account-based features. Sign-up now asks only for email and password, or Sign in with Apple. [New build: [number].]

[Option B: login is essential]
[App name] is a [client portal / team workspace] for [existing customers of X / members of Y]. Every feature works on the user's own account data: [list the main features]. There is no content that could be shown without an account. Accounts are created [at sign-up in the app / by the customer's organization]. A demo account is provided in App Review Information.

Account deletion is available in [Settings > Account > Delete account].

Best regards,
[Name], [email]

Lista de comprobación

  • Un usuario nuevo llega a todas las funciones que no requieren cuenta sin registrarse.
  • webviewurl apunta a una página pública, no a la pantalla de login.
  • La petición de inicio de sesión aparece en la primera acción de cuenta, con una forma de rechazarla.
  • El formulario de registro pide solo lo que necesita la cuenta.
  • El login con redes sociales no es la única forma de entrar.
  • Hay eliminación de cuenta dentro de la app y una cuenta demo que funciona.

Preguntas frecuentes

Mi app es un panel para clientes de pago. ¿Necesito un modo invitado?

No, si cada función trabaja con los datos de la propia cuenta del cliente. Explícalo en las notas de revisión y facilita una cuenta demo. Una página pública que muestre qué hace la app para quienes todavía no son clientes es un buen extra.

¿"Continuar como invitado" tiene que estar en la primera pantalla?

No hay una ubicación fija. Lo que importa es que un usuario nuevo llegue a las funciones que no requieren cuenta sin registrarse. Una página de inicio pública con un botón de "Iniciar sesión" en la cabecera suele ser la solución más limpia.

¿Puedo exigir una cuenta antes de una In-App Purchase?

Cuando la compra está ligada a la cuenta, por ejemplo una suscripción que también desbloquea la versión web, sí; indícalo en las notas de revisión. Para las compras que solo funcionan en el dispositivo, los revisores esperan que el registro sea opcional.

¿Un login solo con Google es un problema de la 5.1.1(v)?

Puede serlo: si tu función principal no tiene nada que ver con Google, la gente debe poder usar la app sin iniciar sesión con Google. El acceso como invitado o el login por correo lo resuelven, y la Directriz 4.8 pide además Sign in with Apple o una opción similar junto a Google.

¿Los usuarios invitados necesitan eliminación de cuenta?

La obligación de eliminar cuentas se aplica a las cuentas que crean los usuarios. Para las sesiones anónimas, una opción de "Borrar mis datos" en los ajustes es una buena práctica, y en cuanto un invitado pasa a tener una cuenta completa, se aplica el flujo normal de Eliminar cuenta.

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.