Aller au contenu
WebViewGold Du vibe coding à l'App Store
Français
Obtenir WebViewGold

Agents de code IA

Les apps de chat IA sur l'App Store et Google Play : les règles réellement appliquées

Les apps qui génèrent du texte ou des images avec un LLM sont examinées de plus près par les deux équipes de validation, et pour de bonnes raisons : des réponses non filtrées, des données personnelles envoyées à un modèle tiers et des factures d'API qui s'envolent ont tous déjà provoqué des retraits. Rien de tout cela n'est difficile à maîtriser dans une app web que vous encapsulez avec WebViewGold. Voici la checklist.

Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.

  • Garantie d'approbation – ou remboursement sous 14 jours
  • Aucun codage requis
  • Paiement unique, mises à jour gratuites
  • Support humain 24/7
  • Conçu en Allemagne depuis 2014 · ISO 27001

Apple : les guidelines que les examinateurs citent pour les apps IA

  • 1.2

    Contenu généré par les utilisateurs, appliqué aux réponses de l'IA

    Apple traite le contenu généré comme du contenu utilisateur : il vous faut un filtrage des contenus répréhensibles, un moyen de les signaler, un moyen de bloquer les utilisateurs abusifs là où les utilisateurs interagissent, et des coordonnées de contact publiées. Pour une app de chat, cela signifie une modération des prompts et des réponses, un bouton Signaler sur chaque réponse et une phrase sur la modération dans la politique.

  • 5.1.2

    Utilisation et partage des données

    Les conversations sont des données personnelles. Indiquez aux utilisateurs, avant le premier message, que leurs saisies sont traitées par OpenAI ou Google pour générer les réponses, et obtenez leur consentement. La guideline mentionne explicitement le partage avec une IA tierce. N'utilisez pas les conversations pour quoi que ce soit que l'utilisateur n'a pas accepté.

  • 5.1.1

    Collecte de données et suppression de compte

    Si les utilisateurs s'inscrivent, la suppression de compte doit être disponible dans l'app et doit aussi effacer l'historique des conversations. La politique de confidentialité doit nommer le fournisseur d'IA et la durée de conservation.

  • 3.1.1

    Achat intégré

    Crédits, tokens, packs de messages et offres premium sont des biens numériques : dans l'app, ils passent par l'achat intégré. Un formulaire Stripe ou un lien vers votre site web pour acheter des crédits entraîne un refus.

  • 4.2

    Fonctionnalité minimale

    Une simple zone de texte devant une API, c'est maigre. Un historique des conversations, des prompts enregistrés, des réglages, des notifications push pour les tâches terminées et un objectif clair en font une app.

  • 2.1

    Complétude de l'app

    L'examinateur va taper quelque chose. Assurez-vous que le compte de démo a des crédits, que le modèle répond en quelques secondes et que les erreurs (limite de débit, panne du fournisseur) affichent un message aimable plutôt qu'un indicateur de chargement sans fin.

Google Play : les règles qui s'appliquent

Règles sur le contenu généré par les utilisateurs

Des exigences de signalement, de blocage et de modération comparables à la 1.2 d'Apple dès que les utilisateurs peuvent publier ou partager. Les examinateurs vérifient que le parcours de signalement existe dans l'app.

Règles sur le contenu généré par IA

Les apps qui génèrent du contenu doivent empêcher les contenus interdits (contenus sexuels impliquant des mineurs, contenus qui facilitent la tromperie ou causent un préjudice) et proposer dans l'app un moyen de signaler les réponses offensantes de l'IA sans quitter l'app. Documentez vos tests de sécurité.

Formulaire Data safety

Les messages de chat envoyés à OpenAI ou Google comptent comme des données partagées avec un tiers. Déclarez-les sous Messages, et nommez ce traitement dans la politique de confidentialité. Une incohérence entre le formulaire et le trafic suffit à elle seule à provoquer un refus.

Questionnaire de classification du contenu

Le questionnaire IARC porte sur l'interaction entre utilisateurs, l'accès illimité à Internet et les contenus pour adultes. Répondez pour le pire cas que vos filtres autorisent ; une classification trop basse est corrigée par Google et peut entraîner un retrait.

Une architecture qui passe

  1. Les clés restent sur le serveur, toujours

    Une clé dans le JavaScript client peut être extraite de n'importe quelle app publiée. Faites passer chaque appel au modèle par votre propre backend (une route serverless suffit), qui détient la clé, vérifie la session et applique les limites.

  2. Modérez les entrées et les sorties

    Soumettez les prompts à une vérification de modération avant le modèle, et les réponses après (OpenAI propose un endpoint de modération ; Gemini a des paramètres et des catégories de sécurité). Bloquez, atténuez ou ajoutez un avertissement selon la catégorie, et journalisez la décision.

  3. Signaler, bloquer, contacter

    Une action Signaler sur chaque réponse générée, qui enregistre l'ID de la conversation et le motif, une option de blocage partout où les utilisateurs se voient entre eux, et un e-mail de support dans l'app et dans la politique.

  4. Limites de débit et maîtrise des coûts

    Des budgets quotidiens de messages et de tokens par utilisateur, des limites plus strictes pour l'usage anonyme, un plafond mensuel ferme chez le fournisseur, des alertes à 50 et 80 %, et un état « limite atteinte » soigné dans l'interface.

  5. Consentement et conservation

    Un avis au premier lancement sur le traitement par un tiers avec un OK explicite, un réglage de conservation (supprimer les conversations après 30 jours, par exemple) et une suppression de compte qui efface l'historique.

Avec une bonne version optimisée de votre application Web, vous pouvez avoir une superbe application mobile en quelques minutes. De plus, le service client est très agréable et très utile! Je ne peux que recommander WebViewGold :-)

Julian Koch · Co-fondateur de DuelDonkey · CodeCanyon

Maîtrise des coûts et modération côté serveur (esquisse)

Un route handler minimal dont la plupart des apps de chat ont besoin. Remplacez le stockage des budgets et les appels au fournisseur par les vôtres.

javascript
// POST /api/chat  (serveur uniquement ; la clé API n'atteint jamais le client)
export async function POST(req) {
  const user = await requireSession(req);                 // 401 si non connecté
  const { message, conversationId } = await req.json();

  const usage = await getDailyUsage(user.id);             // messages et tokens du jour
  if (usage.messages >= user.plan.dailyMessages) {
    return json({ error: "limit", message: "Limite quotidienne atteinte. Réinitialisation à minuit." }, 429);
  }

  const flagged = await moderate(message);                // endpoint de modération du fournisseur
  if (flagged.blocked) {
    await logModeration(user.id, conversationId, flagged);
    return json({ error: "moderated", message: "Cette demande ne peut pas être traitée." }, 400);
  }

  const reply = await callModel({
    messages: await history(conversationId, 20),          // fenêtre de contexte bornée
    maxTokens: 600,                                       // plafonne le coût par réponse
    userTag: hash(user.id),                               // attribution des abus chez le fournisseur
  });

  const outFlag = await moderate(reply.text);
  const text = outFlag.blocked ? "Je ne peux pas vous aider sur ce point." : reply.text;

  await recordUsage(user.id, reply.tokens);
  await saveTurn(conversationId, message, text, { reportable: true });
  return json({ text, conversationId });
}

Classification par âge : répondez pour ce que les filtres autorisent

SituationQuestionnaire de classification par âge d'AppleClassification du contenu Google
Assistant généraliste, modération des entrées et des sorties, aucune fonction d'échange entre utilisateursGénéralement une classification basse ; déclarez que l'app contient du contenu généré par IA, et un accès web illimité si les réponses incluent des liensRépondez honnêtement au questionnaire ; en général une classification de niveau adolescent, en raison de la génération de texte ouverte
Compagnon ou jeu de rôle, thèmes pour adultes possiblesClassification plus élevée (16+ ou 18+ dans le système actuel d'Apple) ; le questionnaire porte sur les contenus pour adultes ou suggestifs et sur l'existence de contrôlesClassification adulte ; assurez-vous que la fiche du store correspond
Conseils médicaux, juridiques ou financiersIndiquez les limites dans l'app et dans la fiche ; Apple examine ces affirmations au titre des guidelines 2.3 et 5.1.1Idem ; ajoutez un avertissement et évitez tout vocabulaire de diagnostic ou de conseil en investissement
Enfants comme public cibleLes règles de la catégorie Enfants s'appliquent : aucun traitement de données personnelles par une IA tierce sans consentement parental, et des exigences plus strictes partoutRègles Familles : l'IA générative pour les enfants exige des garde-fous supplémentaires et n'est souvent pas approuvée

Vendre des crédits : l'achat intégré via RevenueCat

WebViewGold déclenche un achat intégré avec une seule URL : window.location.href = "revenuecat://purchase?external_id=" + userId + "&product=credits_100", où le produit est un consommable configuré dans App Store Connect, Google Play et RevenueCat, et où la clé API et l'ID de projet RevenueCat sont définis dans le projet WebViewGold. Votre serveur écoute le webhook RevenueCat et ajoute les crédits au solde de l'utilisateur ; n'ajoutez jamais de crédits côté client. Proposez restoreinapppurchases:// dans les réglages et, pour les abonnements, cancelinapppurchase://, qui ouvre la gestion des abonnements du store.

Sur le web, Stripe reste parfaitement adapté, et les crédits achetés sur le web peuvent être utilisés dans l'app. Ce que vous ne devez pas faire, c'est renvoyer les utilisateurs de l'app vers le site web pour acheter des crédits. Les deux stores prélèvent 15 % au lieu de 30 % dans le cadre du Small Business Program d'Apple et du palier à 15 % de Google pour un chiffre d'affaires inférieur à 1 million de dollars par an ; le guide de configuration RevenueCat couvre la configuration des produits.

Prompt pour Codex : préparer l'app de chat à l'examen

À coller dans Codex ou Claude Code
Renforcez cette app de chat IA en vue de l'examen App Store et Google Play. 1) Vérifiez qu'aucune clé API d'un fournisseur n'atteint le client ; déplacez tout appel direct au fournisseur dans une route serveur qui exige une session. 2) Ajoutez une modération avant l'appel au modèle et sur la réponse, avec journalisation. 3) Ajoutez une action Signaler sur chaque réponse générée (elle enregistre l'id de la conversation, l'id du message et le motif) et une action Bloquer partout où les utilisateurs se voient entre eux. 4) Ajoutez des budgets quotidiens de messages et de tokens par utilisateur, avec un état « limite atteinte » aimable, et des limites plus strictes pour les utilisateurs anonymes. 5) Ajoutez au premier lancement un avis de consentement expliquant que les messages sont traités par [OpenAI/Google] pour générer les réponses, avec un bouton Continuer explicite, et enregistrez le consentement. 6) Ajoutez un réglage de conservation et faites en sorte que la suppression de compte efface l'historique des conversations. 7) Quand isNativeApp() est true, redirigez les achats de crédits vers revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID et masquez les liens de paiement web ; les crédits ne sont accordés que par le handler du webhook RevenueCat. 8) Mettez à jour /privacy pour nommer le fournisseur d'IA, la durée de conservation et le signalement. Rendez compte de chaque changement et de tout ce qui nécessite une configuration côté fournisseur.

Questions fréquentes

Apple exige-t-il une modération pour toute app IA ?

En pratique, oui pour tout ce qui génère du texte ou des images de façon ouverte : les examinateurs testent avec des prompts répréhensibles et attendent un filtrage, un parcours de signalement et des coordonnées de contact, conformément à la guideline 1.2.

Puis-je appeler l'API OpenAI ou Gemini directement depuis le navigateur avec une clé restreinte ?

Non. Toute clé envoyée au client peut être extraite d'une app publiée et utilisée à vos frais. Placez l'appel derrière votre propre route serveur, avec authentification et limites.

Dois-je indiquer que les messages sont envoyés à OpenAI ou Google ?

Oui. Nommez le fournisseur dans la politique de confidentialité, déclarez le partage dans les réponses App Privacy d'Apple et dans le formulaire Data safety de Google, et demandez le consentement dans l'app avant le premier message (Apple 5.1.2).

Puis-je vendre des crédits avec Stripe ?

Sur le web, oui. Dans les apps iOS et Android, les crédits sont des biens numériques et doivent passer par l'achat intégré, que WebViewGold gère via RevenueCat. Les crédits achetés sur le web peuvent être utilisés dans l'app.

Trois façons de mettre votre app dans les stores

Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.

Faites-le vous-même

$109 par plateforme, paiement unique

La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.

Voir les offres sur la page principale

Full Service

$698 par plateforme $798

Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.

Détails du Full Service Propulsé par WeSetupYourWebViewApp

Prix Soldes d'hiver valables jusqu'au 31 décembre 2026.

Prêt à publier votre app ?

Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours

Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.

Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.