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

Agentes de programación con IA

Apps de chat con IA en el App Store y en Google Play: las reglas que de verdad se aplican

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.

  • 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

Apple: las directrices que citan los revisores en las apps de IA

  • 1.2

    Contenido generado por usuarios, aplicado a los resultados de la IA

    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.

  • 5.1.2

    Uso y compartición de datos

    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.

  • 5.1.1

    Recopilación de datos y eliminación de cuenta

    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.

  • 3.1.1

    Compra dentro de la app

    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.

  • 4.2

    Funcionalidad mínima

    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.

  • 2.1

    Completitud de la 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.

Google Play: las políticas que se aplican

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.

Política de contenido generado por IA

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.

Formulario Data safety

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.

Cuestionario de clasificación de contenido

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 arquitectura que supera la revisión

  1. Las claves viven en el servidor, siempre

    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.

  2. Modera la entrada y la salida

    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.

  3. Denunciar, bloquear, contactar

    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.

  4. Límites de uso y control de costos

    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.

  5. Consentimiento y conservación

    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 :-)

Julian Koch · Cofundador de Dueldonkey · CodeCanyon

Control de costos y moderación en el servidor (esbozo)

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.

javascript
// 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 });
}

Clasificación por edad: responde según lo que permitan los filtros

SituaciónCuestionario de clasificación por edad de AppleClasificación de contenido de Google
Asistente general, moderación de entrada y salida, sin funciones entre usuariosNormalmente una clasificación baja; declara que la app incluye contenido generado por IA y acceso web sin restricciones si las respuestas incluyen enlacesResponde 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 adultosClasificació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 controlesClasificación para adultos; asegúrate de que la ficha de la tienda coincide
Consejo médico, legal o financieroIndica los límites en la app y en la ficha; Apple examina las afirmaciones según la 2.3 y la 5.1.1Lo mismo; añade un aviso legal y evita el lenguaje de diagnóstico o de inversión
Niños como públicoSe 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 estrictoPolítica de Familias: la IA generativa para niños necesita salvaguardas adicionales y a menudo no se aprueba

Vender créditos: compra dentro de la app mediante RevenueCat

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.

Prompt para Codex: prepara la app de chat para la revisión

Pégalo en Codex o Claude Code
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.

Preguntas frecuentes

¿Apple exige moderación en todas las apps de IA?

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.

¿Puedo llamar a la API de OpenAI o Gemini directamente desde el navegador con una clave restringida?

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.

¿Tengo que informar de que los mensajes van a OpenAI o Google?

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

¿Puedo vender créditos con Stripe?

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.

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.