Política de contenido generado por usuarios
Requisitos de denuncia, bloqueo y moderación comparables a la 1.2 de Apple cuando los usuarios pueden publicar o compartir. Los revisores comprueban que la vía de denuncia existe dentro de la app.
Agentes de programación con IA
Las apps que generan texto o imágenes con un LLM reciben un examen más detallado de ambos equipos de revisión, y con razón: resultados sin filtrar, datos personales que fluyen hacia un modelo de terceros y facturas de API descontroladas han provocado retiradas. Nada de esto es difícil de resolver en una app web que envuelves con WebViewGold. Esta es la lista de comprobación.
Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.
Apple trata el contenido generado como contenido de usuarios: necesitas filtrar el material inapropiado, una forma de denunciarlo, una forma de bloquear a usuarios abusivos cuando los usuarios interactúan entre sí y datos de contacto publicados. En una app de chat, esto significa moderar prompts y respuestas, un botón Denunciar en cada respuesta y una frase sobre moderación en la política.
Los chats son datos personales. Antes del primer mensaje, informa a los usuarios de que OpenAI o Google procesan lo que escriben para generar respuestas, y obtén su consentimiento. La directriz menciona expresamente compartir datos con una IA de terceros. No uses los chats para nada que el usuario no haya aceptado.
Si los usuarios se registran, la eliminación de cuenta debe estar disponible en la app y también debe borrar el historial de chats. La política de privacidad debe nombrar al proveedor de IA y el plazo de conservación.
Los créditos, tokens, paquetes de mensajes y niveles premium son bienes digitales: dentro de la app pasan por la compra dentro de la app. Un formulario de Stripe o un enlace a tu sitio web para comprar créditos supone un rechazo.
Un único cuadro de texto delante de una API se queda corto. El historial de conversaciones, los prompts guardados, los ajustes, las notificaciones push cuando termina una tarea y un propósito claro la convierten en una app.
El revisor escribirá algo. Asegúrate de que la cuenta demo tiene créditos, de que el modelo responde en segundos y de que los errores (límite de peticiones, caída del proveedor) muestran un mensaje amable en lugar de un indicador de carga sin fin.
Requisitos de denuncia, bloqueo y moderación comparables a la 1.2 de Apple cuando los usuarios pueden publicar o compartir. Los revisores comprueban que la vía de denuncia existe dentro de la app.
Las apps que generan contenido deben impedir los resultados restringidos (contenido sexual que involucre a menores, contenido que facilite el engaño o el daño) y deben ofrecer una forma dentro de la app de denunciar o marcar resultados ofensivos de la IA sin salir de ella. Documenta tus pruebas de seguridad.
Los mensajes de chat enviados a OpenAI o Google cuentan como datos compartidos con un tercero. Decláralo en Mensajes y nombra el tratamiento en la política de privacidad. Una discrepancia entre el formulario y el tráfico es por sí sola motivo de rechazo.
El cuestionario de IARC pregunta por la interacción entre usuarios, el acceso sin restricciones a internet y el contenido para adultos. Responde para el peor caso que permitan tus filtros; Google corrige las clasificaciones demasiado bajas, y eso puede acabar en una retirada.
Una clave en el JavaScript del cliente se puede extraer de cualquier app publicada. Pasa cada llamada al modelo por tu propio backend (basta con una ruta serverless) que guarde la clave, compruebe la sesión y aplique límites.
Pasa los prompts por una comprobación de moderación antes del modelo y las respuestas después (OpenAI ofrece un endpoint de moderación; Gemini tiene ajustes y categorías de seguridad). Bloquea, suaviza o añade un aviso según la categoría, y registra la decisión.
Una acción Denunciar en cada respuesta generada que guarde el ID de la conversación y el motivo, una opción de bloqueo allí donde los usuarios se vean entre sí y un email de soporte en la app y en la política.
Presupuestos diarios de mensajes y tokens por usuario, límites más estrictos para el uso anónimo, un tope mensual fijo en el proveedor, alertas al 50 y al 80 por ciento y un estado de "límite alcanzado" bien resuelto en la interfaz.
Un aviso en el primer uso sobre el tratamiento por terceros con un OK explícito, un ajuste de conservación (borrar los chats a los 30 días, por ejemplo) y una eliminación de cuenta que purgue el historial.

Con una buena versión optimizada de su aplicación web, puedes tener una impresionante aplicación móvil en un par de minutos. ¡Además del servicio al cliente es muy agradable y muy útil! ¡Puedo recomendar WebViewgold :-)
Un route handler mínimo que necesitan la mayoría de las apps de chat. Sustituye el almacén de presupuestos y las llamadas al proveedor por los tuyos.
// POST /api/chat (solo servidor; la clave de API nunca llega al cliente)
export async function POST(req) {
const user = await requireSession(req); // 401 si no ha iniciado sesión
const { message, conversationId } = await req.json();
const usage = await getDailyUsage(user.id); // mensajes y tokens de hoy
if (usage.messages >= user.plan.dailyMessages) {
return json({ error: "limit", message: "Límite diario alcanzado. Se restablece a medianoche." }, 429);
}
const flagged = await moderate(message); // endpoint de moderación del proveedor
if (flagged.blocked) {
await logModeration(user.id, conversationId, flagged);
return json({ error: "moderated", message: "No se puede procesar esa solicitud." }, 400);
}
const reply = await callModel({
messages: await history(conversationId, 20), // ventana de contexto acotada
maxTokens: 600, // limita el costo por respuesta
userTag: hash(user.id), // atribución de abusos en el proveedor
});
const outFlag = await moderate(reply.text);
const text = outFlag.blocked ? "No puedo ayudarte con eso." : reply.text;
await recordUsage(user.id, reply.tokens);
await saveTurn(conversationId, message, text, { reportable: true });
return json({ text, conversationId });
}| Situación | Cuestionario de clasificación por edad de Apple | Clasificación de contenido de Google |
|---|---|---|
| Asistente general, moderación de entrada y salida, sin funciones entre usuarios | Normalmente una clasificación baja; declara que la app incluye contenido generado por IA y acceso web sin restricciones si las respuestas incluyen enlaces | Responde el cuestionario con honestidad; suele salir una clasificación para adolescentes por la generación de texto abierta |
| Compañía virtual o juegos de rol, posibles temas para adultos | Clasificación más alta (16+ o 18+ en el sistema actual de Apple); el cuestionario pregunta por contenido para adultos o sugerente y por si existen controles | Clasificación para adultos; asegúrate de que la ficha de la tienda coincide |
| Consejo médico, legal o financiero | Indica los límites en la app y en la ficha; Apple examina las afirmaciones según la 2.3 y la 5.1.1 | Lo mismo; añade un aviso legal y evita el lenguaje de diagnóstico o de inversión |
| Niños como público | Se aplican las reglas de la categoría Niños: nada de tratamiento de datos personales por una IA de terceros sin consentimiento parental, y todo más estricto | Política de Familias: la IA generativa para niños necesita salvaguardas adicionales y a menudo no se aprueba |
WebViewGold activa una compra dentro de la app con una sola URL: window.location.href = "revenuecat://purchase?external_id=" + userId + "&product=credits_100", donde el producto es un consumible configurado en App Store Connect, Google Play y RevenueCat, y la clave de API y el ID de proyecto de RevenueCat están definidos en el proyecto de WebViewGold. Tu servidor escucha el webhook de RevenueCat y suma los créditos al saldo del usuario; nunca añadas créditos en el cliente. Ofrece restoreinapppurchases:// en los ajustes y, para las suscripciones, cancelinapppurchase://, que abre la gestión de suscripciones de la tienda.
En la web, Stripe sigue siendo válido, y los créditos comprados en la web se pueden usar en la app. Lo que no debes hacer es enviar a los usuarios de la app al sitio web para comprar créditos. Ambas tiendas se quedan con un 15% en lugar del 30% con el Small Business Program de Apple y el nivel del 15% de Google para ingresos inferiores a 1 millón de dólares al año; la guía de configuración de RevenueCat explica cómo configurar los productos.
Refuerza esta app de chat con IA de cara a la revisión de App Store y Google Play. 1) Verifica que ninguna clave de API del proveedor llega al cliente; mueve cualquier llamada directa al proveedor a una ruta del servidor que exija sesión. 2) Añade moderación antes de la llamada al modelo y sobre la respuesta, con registro. 3) Añade una acción Denunciar en cada respuesta generada (guarda el id de la conversación, el id del mensaje y el motivo) y una acción Bloquear allí donde los usuarios se vean entre sí. 4) Añade presupuestos diarios de mensajes y tokens por usuario con un estado amable de límite alcanzado, y límites más estrictos para usuarios anónimos. 5) Añade un aviso de consentimiento en el primer uso que explique que [OpenAI/Google] procesa los mensajes para generar respuestas, con un botón Continuar explícito, y registra el consentimiento. 6) Añade un ajuste de conservación y haz que la eliminación de cuenta purgue el historial de chats. 7) Cuando isNativeApp() sea true, envía las compras de créditos a revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID y oculta los enlaces de pago web; los créditos solo los concede el handler del webhook de RevenueCat. 8) Actualiza /privacy para que nombre al proveedor de IA, la conservación y las denuncias. Informa de cada cambio y de todo lo que necesite configuración en el proveedor.
En la práctica, sí, en cualquier app que genere texto o imágenes de forma abierta: los revisores prueban con prompts inapropiados y esperan filtrado, una vía de denuncia y datos de contacto, conforme a la Directriz 1.2.
No. Cualquier clave que llegue al cliente se puede extraer de una app publicada y usarse a tu costa. Pon la llamada detrás de tu propia ruta del servidor, con autenticación y límites.
Sí. Nombra al proveedor en la política de privacidad, declara la compartición en las respuestas de App Privacy de Apple y en el formulario Data safety de Google, y pide el consentimiento en la app antes del primer mensaje (Apple 5.1.2).
En la web, sí. Dentro de las apps de iOS y Android, los créditos son bienes digitales y deben pasar por la compra dentro de la app, que WebViewGold gestiona mediante RevenueCat. Los créditos comprados en la web se pueden usar en la app.
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.
$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$349 por licencia, complemento de pago único
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.
Cómo funciona el Cloud Builder Prueba la demo gratuita$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 dePrecios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.
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.