Guideline 4.8 de Apple: ¿es obligatorio Sign in with Apple?
Por Mehdi Azizi
Publicado el , 9 min
Guideline 4.8: si tu app ofrece Google o Facebook, añade un inicio de sesión que proteja el correo, como Apple. Excepciones, código Expo y borrado de cuenta.
La guideline 4.8 se aplica en cuanto tu app usa Google, Facebook u otro inicio de sesión de terceros para crear la cuenta principal. En ese caso exige otra opción de inicio de sesión, equivalente, que limite los datos al nombre y al correo, permita ocultar el correo y no rastree al usuario con fines publicitarios sin su consentimiento. Desde enero de 2024, esa opción ya no tiene que ser obligatoriamente «Sign in with Apple», pero es la que el propio Apple menciona en sus mensajes de rechazo.
En mis apps, Solys y Nolera ofrecen Apple, Google y correo electrónico. Esta guía parte del texto actual de Apple, luego muestra cómo agrego el inicio de sesión con Apple en una app Expo conectada a Supabase, y qué cambia para la eliminación de cuenta. Si buscas el panorama general de los motivos de rechazo, mejor lee por qué Apple rechaza una app.
¿Qué dice la guideline 4.8 Login Services?
La 4.8 está en la sección 4, «Design», de las App Review Guidelines. Apunta a las apps que usan «a third-party or social login service» para crear o autenticar la cuenta principal: Facebook Login, Google Sign-In, Log in with X, LinkedIn, Amazon o WeChat. Esas apps también deben ofrecer, «as an equivalent option», otro servicio de inicio de sesión que cumpla tres condiciones.
| Condición de Apple | En palabras simples |
|---|---|
| Datos limitados | Nombre y correo, nada más |
| Correo privado posible | El usuario puede ocultarlo |
| Sin publicidad sin permiso | Ningún rastreo publicitario sin permiso |
El texto también define la cuenta principal: la que la persona crea en tu app para identificarse, iniciar sesión y acceder a tus funciones. Según esa definición, un botón de Google que solo sirve para importar un archivo no crea una cuenta principal. La 4.8 apunta a la pantalla por la que se entra a tu app.
Lo que cambió en enero de 2024
Antes de 2024, la regla imponía «Sign in with Apple» a las apps que usaban un inicio de sesión de terceros para la cuenta principal. El 25 de enero de 2024, Apple flexibilizó este punto: puedes ofrecer el inicio de sesión con Apple o un servicio equivalente que proteja la privacidad. Muchas páginas todavía dicen lo contrario. La documentación de Expo sigue diciendo que una app con inicio de sesión de terceros debe ofrecer Apple.
En la práctica, el mensaje de rechazo 4.8 publicado en los foros de desarrolladores de Apple termina así: «Note that Sign in with Apple meets the requirements specified in guideline 4.8». Apple no nombra ningún otro servicio que cumpla. Para no jugar a las adivinanzas con el revisor, agrego el inicio de sesión con Apple.
Las cinco excepciones que prevé el texto
Apple enumera cinco casos en los que no se exige ningún otro inicio de sesión:
- Tu app solo usa tu propio sistema de cuentas, por ejemplo correo con contraseña o un código enviado por correo.
- Tu app es una tienda de apps alternativa, o se distribuye a través de una, con un inicio de sesión propio de esa tienda.
- Tu app es educativa, empresarial o profesional, y exige una cuenta existente de escuela o de empresa.
- Tu app usa un sistema de identidad electrónica respaldado por un gobierno o un sector.
- Tu app es el cliente de un servicio de terceros específico: la persona inicia sesión en su correo o en su red social para acceder a su propio contenido.
Incluso antes de estas excepciones, hazte una pregunta: ¿tu app necesita una cuenta? Si no es así, la guideline 5.1.1(v) pide que se pueda usar sin iniciar sesión, como explico en la guía de la guideline 5.1.1.
| Tu pantalla de inicio de sesión | ¿Se aplica la 4.8? |
|---|---|
| Sin cuenta | No |
| Solo correo o código | No |
| Solo Google | Sí |
| Google y correo | Sí, en principio |
| Google y Apple | Sí, y cumple |
| Cuenta de escuela existente | No |
| Google para importar | No, no hay cuenta |
Agregar «Sign in with Apple» en una app Expo
1. Instalar el módulo y declarar la capacidad
npx expo install expo-apple-authentication
Luego, la documentación de Expo pide activar la capacidad en la configuración de la app:
{
"expo": {
"ios": {
"usesAppleSignIn": true,
"infoPlist": { "CFBundleAllowMixedLocalizations": true }
}
}
}
La segunda línea muestra el botón en el idioma del iPhone. Con EAS Build, la capacidad se activa en tu identificador de app al momento del build. Es un ajuste nativo: se va con un nuevo build, nunca con una actualización remota.
Una trampa que encontré al revisar el código base de mis kits: esta capacidad exige una firma, incluso para ejecutar la app en el simulador. En una Mac sin certificado «Apple Development», la compilación local fallaba con «No code signing certificates are available to use». La solución: activar el inicio de sesión con Apple solo cuando el servidor de autenticación está configurado.
2. Mostrar el botón oficial, tan visible como el de Google
Las reglas de diseño de Apple son claras: el botón de Apple no debe ser más pequeño que los demás botones de inicio de sesión, y no debería ser necesario desplazar la pantalla para verlo. El componente de Expo dibuja el botón oficial, con un título autorizado por Apple.
import * as AppleAuthentication from "expo-apple-authentication";
import { useEffect, useState } from "react";
export function BoutonApple({ onPress }: { onPress: () => void }) {
const [disponible, setDisponible] = useState(false);
useEffect(() => {
AppleAuthentication.isAvailableAsync().then(setDisponible);
}, []);
// Android y web: sin inicio de sesión con Apple, sin botón.
if (!disponible) return null;
return (
<AppleAuthentication.AppleAuthenticationButton
buttonType={AppleAuthentication.AppleAuthenticationButtonType.CONTINUE}
buttonStyle={AppleAuthentication.AppleAuthenticationButtonStyle.BLACK}
cornerRadius={12}
style={{ width: "100%", height: 50 }}
onPress={onPress}
/>
);
}
Expo aclara que el botón no aparece sin ancho ni alto. El color y el redondeo se definen con buttonStyle y cornerRadius, no con el estilo.
3. Abrir la sesión en Supabase
import * as AppleAuthentication from "expo-apple-authentication";
import { supabase } from "./supabase";
export async function connexionApple(): Promise<"ok" | "annule"> {
try {
const credential = await AppleAuthentication.signInAsync({
requestedScopes: [
AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
AppleAuthentication.AppleAuthenticationScope.EMAIL,
],
});
if (!credential.identityToken) throw new Error("Falta el token de Apple");
const { error } = await supabase.auth.signInWithIdToken({
provider: "apple",
token: credential.identityToken,
});
if (error) throw error;
// El nombre solo llega en la primera autorización: lo guardamos de inmediato.
const prenom = credential.fullName?.givenName;
if (prenom) await supabase.auth.updateUser({ data: { prenom } });
return "ok";
} catch (e) {
if ((e as { code?: string }).code === "ERR_REQUEST_CANCELED")
return "annule";
throw e;
}
}
Hay cuatro detalles importantes, sacados de la documentación de Supabase, de la de Expo y de las reglas de diseño de Apple:
- En Supabase, declara tu identificador de bundle en los Client IDs del proveedor Apple. Una app solo nativa no necesita clave secreta para iniciar sesión. Agrega
host.exp.Exponentsi pruebas en Expo Go. - El nombre y el correo llegan una sola vez. Apple ya no los devuelve en los inicios de sesión siguientes: guárdalos desde la primera respuesta.
- El correo puede ser una dirección de reenvío. Apple recomienda no volver a pedir una dirección personal después.
- Una cancelación no es un error. En Nolera, cerrar la hoja de Apple no muestra ningún mensaje en rojo: es un gesto voluntario.
Un caso real en Solys, en agosto de 2026: los botones de Apple y Google estaban en la app, pero ninguno de los dos proveedores estaba activado en Supabase. El código estaba bien; la corrección se hizo en el servidor, sin nuevo build. Un botón de Apple que falla frente al revisor es un rechazo 2.1 en lugar de un rechazo 4.8. El detalle está en la guía de la guideline 2.1.
4. Probar en un iPhone real
Expo advierte que el simulador solo permite una prueba limitada, y que los identificadores recibidos en Expo Go son distintos de los de la app publicada. Prueba el inicio de sesión, el cierre de sesión y luego un nuevo inicio de sesión en un iPhone real, con un build de TestFlight.
Inicio de sesión con Apple y eliminación de cuenta
La guideline 5.1.1(v) pide que una cuenta creada en la app se pueda eliminar desde la app. Con el inicio de sesión con Apple, la página de Apple sobre la eliminación de cuenta agrega un paso: usar la API REST de Sign in with Apple para revocar los tokens de la persona.
Esta revocación requiere dos cosas: un token de la persona, que se obtiene validando un código de autorización, y un secreto firmado con tu clave privada de Sign in with Apple. Aunque el inicio de sesión nativo no necesite clave secreta, la revocación sí la exige, y esa clave se queda en tu servidor. El porqué está en clave API secreta en una app Expo.
En Nolera, al momento de eliminar la cuenta, la app vuelve a pedir un inicio de sesión con Apple para obtener un código de autorización nuevo. Lo envía a una función del servidor, que lo intercambia con Apple y luego revoca el token. Si la persona cancela, un mensaje claro lo indica y no se elimina nada. El resto del proceso, incluidos datos, suscripción y pruebas, está en eliminación de cuenta en iOS.
Qué responderle a Apple después de un rechazo 4.8
El mensaje de Apple ofrece dos salidas. O agregas una opción equivalente. O tu app ya tiene una: respondes en App Store Connect, dices cuál y por qué cumple las tres condiciones. Apple también sugiere actualizar las capturas que muestran la pantalla de inicio de sesión. El procedimiento para responder a App Review es el mismo que para las demás reglas.
Aquí tienes un modelo en inglés, para adaptar (reemplaza el número de build):
Hello,
Thank you for your review.
Build X adds Sign in with Apple as an equivalent login option.
It appears on the same screen as Google Sign-In, with the same
size, and is visible without scrolling.
How to verify: launch the app, open the sign-in screen and
tap "Continue with Apple".
We also updated the screenshots that show the sign-in screen.
Best regards,
La checklist 4.8 antes del envío
- Sabes si tu app necesita una cuenta. Si no, se usa sin iniciar sesión.
- Si Google, Facebook o X crean la cuenta, el inicio de sesión con Apple está en la misma pantalla.
- El botón de Apple es el botón oficial, del mismo tamaño que los demás, visible sin desplazarse.
- El proveedor Apple está activado en el servidor, con tu identificador de bundle.
- Una cancelación regresa a la pantalla de inicio de sesión, sin mensaje de error.
- El nombre y el correo se guardan desde el primer inicio de sesión.
- La eliminación de cuenta revoca el token de Apple, desde tu servidor.
- Todo está probado en un iPhone real, con una cuenta de Apple que nunca haya iniciado sesión en la app.
- Tus capturas muestran la pantalla de inicio de sesión tal como está en el build enviado.
Corregir tu rechazo antes de volver a enviar la app
Si tu app acaba de ser rechazada por la 4.8, el Apple Review Kit reúne lo que reviso antes de cada envío, con dos skills que revisan tu proyecto en Claude Code y preparan tu respuesta si Apple rechaza la app. Si quieres una mirada humana, reserva una hora conmigo: leemos el mensaje juntos y revisamos tu pantalla de inicio de sesión. El proceso completo después de un rechazo está en la página app rechazada por Apple.
Si estás preparando tu primer lanzamiento, haz tu diagnóstico gratuito: te dice qué etapa atacar primero y te envía mi checklist contra los rechazos de Apple.
Nadie puede garantizar que Apple aceptará tu app. Agregar el inicio de sesión con Apple en el lugar correcto al menos quita este motivo de la lista.
Preguntas frecuentes
¿El inicio de sesión con Apple es obligatorio en iOS?
No, no en todos los casos. Solo se exige si tu app ofrece un inicio de sesión de terceros, como Google o Facebook, para crear la cuenta principal. Desde enero de 2024, otro servicio equivalente puede reemplazarlo, pero Apple solo menciona el inicio de sesión con Apple como conforme.
¿Qué significa «Guideline 4.8 - Design - Login Services»?
Es el título del rechazo en el mensaje de Apple. Significa que tu app ofrece un inicio de sesión de terceros sin ofrecer una opción equivalente que limite los datos al nombre y al correo, permita ocultar el correo y no se use para publicidad sin consentimiento.
¿Mi registro por correo es suficiente junto a Google?
No está garantizado. El texto pide un servicio que permita mantener el correo privado, mientras que un formulario clásico lo pide. Apple no ha publicado una postura sobre este caso, y su mensaje de rechazo solo menciona el inicio de sesión con Apple. Yo no correría ese riesgo.
¿Hay que ofrecer el inicio de sesión con Apple en Android?
No. La 4.8 es una regla del App Store, y el módulo de Expo solo funciona en iOS. En Android, isAvailableAsync() devuelve falso: el botón de Apple no se muestra, y Google puede quedarse solo.
¿Hace falta un nuevo build después de un rechazo 4.8?
Sí, en la mayoría de los casos. El inicio de sesión con Apple requiere una capacidad nativa, activada al momento del build. Una actualización remota no puede agregarla. Única excepción: tu app ya tenía una opción conforme, y basta con explicárselo a Apple en tu respuesta.