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

ChatGPT & Codex + captures d'écran

Protéger et enregistrer les captures d'écran dans votre app ChatGPT & Codex

Leçons payantes, conversations privées, soldes de compte, coupons à usage unique : certains écrans ne devraient pas finir dans une discussion de groupe. WebViewGold peut bloquer les captures et les enregistrements d'écran sur Android et les détecter sur iOS, puis appeler une fonction JavaScript dans votre app ChatGPT & Codex pour que vous puissiez réagir. La même boîte à outils fonctionne aussi dans l'autre sens : takescreenshot:// enregistre volontairement un écran dans Photos, pour les billets et les reçus.

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

Ce que chaque plateforme permet vraiment

FonctionnalitéiOSAndroid
Empêcher captures et enregistrements d'écranImpossible : iOS n'a aucune API officielle qui bloque une capture d'écranPREVENT_SCREEN_CAPTURE = true dans Config.java empêche les captures et les enregistrements d'écran de l'app
Prévenir l'app weblet preventScreenCapture = true dans Config.swift détecte les captures et les enregistrements d'écran et appelle onScreenCaptureAttempt() (malgré son nom, la documentation décrit une détection)onScreenCaptureAttempt() est appelée pour que vous puissiez afficher votre propre message
Enregistrer volontairement l'écran actuel dans Photostakescreenshot://takescreenshot://
PortéeUn seul réglage pour toute l'app ; aucun réglage par page n'est documentéUn seul réglage pour toute l'app ; aucun réglage par page n'est documenté

Prompt pour ChatGPT & Codex

Collez ceci dans ChatGPT & Codex pour implémenter la partie app web. Vérifiez le résultat, publiez, puis testez dans l'app WebViewGold.

Prompt pour ChatGPT ou Codex
Prompt pour Codex : Implémentez la gestion des captures d'écran de WebViewGold et ouvrez une pull request. Enregistrez window.onScreenCaptureAttempt dans le fichier d'entrée de l'app pour qu'elle soit globale ; elle affiche un court avertissement sur les pages protégées et envoie le chemin à un endpoint /api/capture-events qui lit l'utilisateur depuis la session. Rendez les textes visibles par l'utilisateur exacts pour chaque plateforme : sur iOS, dites que les captures sont détectées ; sur Android, qu'elles sont désactivées ; détectez la plateforme avec des tokens de user agent personnalisés distincts (WebViewGold-iOS et WebViewGold-Android). Ajoutez saveScreenToPhotos(), qui navigue vers takescreenshot:// dans l'app, et un bouton Enregistrer dans Photos sur les pages de billets, masqué dans les navigateurs. Mettez à jour la page de politique de confidentialité pour mentionner la journalisation des tentatives de capture. Ajoutez des tests et consignez les règles dans AGENTS.md.

WebViewGold nous a permis d'avoir le temps de mise sur le marché le plus court et le plus efficace jamais possible parmi toutes les autres plates-formes d'application que nous avons essayées au cours des 5 dernières années. Je ne sais pas pourquoi je ne vous ai pas découvert plus tôt, mais je suis vraiment, vraiment content de l'avoir fait. Nous approchons actuellement les 6000 téléchargements d'application sur l'App Store iOS et Google Play Store sans aucun problème!

Antonio Davila · CodeCanyon

Réagir à une tentative de capture dans votre app web

Environ 20 minutes, plus un nouveau build des deux apps.

  1. Activez le réglage

    iOS : let preventScreenCapture = true dans Config.swift. Android : PREVENT_SCREEN_CAPTURE = true dans Config.java. C'est une modification native : elle arrive avec le prochain build de l'app, pas avec un déploiement web.

  2. Rendez onScreenCaptureAttempt globale

    WebViewGold appelle une fonction qui porte exactement ce nom. Le code empaqueté par Vite, Next.js ou des outils similaires vit dans des modules : une fonction déclarée dans un composant n'est donc pas globale. Assignez-la explicitement dans du code exécuté sur chaque page : window.onScreenCaptureAttempt = function () { … }.

  3. Affichez un message apaisé

    Expliquez pourquoi (« Les diapositives des leçons sont protégées par respect pour leur auteur ») plutôt que de déconnecter l'utilisateur. Sur iOS, la capture a déjà été prise quand la fonction s'exécute : le message dissuade, il ne bloque pas.

  4. Ne journalisez que si nécessaire

    Les apps d'examen, de documents et de finance peuvent vouloir une piste d'audit (utilisateur, page, heure). Si vous l'enregistrez, mentionnez-le dans votre politique de confidentialité.

  5. Proposez une façon prévue d'enregistrer

    Là où l'enregistrement est légitime (billets, reçus, certificats), ajoutez un bouton Enregistrer dans Photos qui navigue vers takescreenshot://. Si vous le combinez avec le blocage des captures sur Android, vérifiez sur un appareil que l'image enregistrée n'est pas vide.

Le côté JavaScript

Chargez ceci une fois sur chaque page (par exemple dans le fichier d'entrée de l'app). L'endpoint de journalisation facultatif relève de la partie serveur de votre stack : Votre propre API ou des fonctions serverless.

javascript
// User agent personnalisé contenant "WebViewGold", défini dans Config.swift / Config.java
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;

// Appelée par WebViewGold quand il détecte une capture ou un enregistrement d'écran (iOS)
// ou une tentative de capture alors que PREVENT_SCREEN_CAPTURE est actif (Android)
window.onScreenCaptureAttempt = function () {
  showToast("Les captures d'écran sont désactivées pour les leçons payantes."); // votre propre helper d'interface
  fetch("/api/capture-events", {
    method: "POST", keepalive: true,
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ path: location.pathname, at: Date.now() })
  });
};

// Enregistrement voulu, par exemple sur une page de billet
function saveTicketToPhotos() {
  if (IN_APP) { window.location.href = "takescreenshot://"; }
  else { window.print(); } // solution de repli dans le navigateur
}

Les limites à assumer

  • Aucune protection n'est absolue : n'importe qui peut photographier l'écran avec un second téléphone. Utilisez-la pour décourager le partage occasionnel, pas comme seule protection de données confidentielles.
  • Captures pour les stores : une fois le blocage actif, Android bloque aussi vos propres captures. Réalisez les images de la fiche Play avant de l'activer, ou à partir d'un build sans le blocage. Voir captures d'écran et fiche du store.
  • Les utilisateurs s'attendent à pouvoir faire une capture de leurs billets, reçus et confirmations. Bloquer toute l'app à cause d'une seule page sensible les frustre, et cela se voit dans les avis du store.
  • Sur iOS, construisez l'expérience autour de la détection : un avertissement, une entrée de journal facultative ou un filigrane visible avec l'e-mail de l'utilisateur sur les pages sensibles.
  • takescreenshot:// enregistre dans la photothèque. iOS demande l'autorisation à l'utilisateur la première fois : le texte d'explication Photos (purpose string) du projet Xcode doit donc dire pourquoi (« pour enregistrer votre billet et l'utiliser hors ligne »).

Questions fréquentes

Puis-je bloquer les captures d'écran sur iPhone ?

Pas complètement. iOS n'a aucune API officielle qui empêche une capture d'écran. WebViewGold détecte les captures et les enregistrements d'écran (preventScreenCapture dans Config.swift) et appelle onScreenCaptureAttempt dans l'app web pour que vous puissiez réagir. Le vrai blocage est disponible sur Android avec PREVENT_SCREEN_CAPTURE dans Config.java.

La protection contre les captures pose-t-elle problème lors de l'examen App Store ou Google Play ?

Pas en soi. Aucun des deux stores n'oblige les apps à autoriser les captures d'écran, et la détection ne demande aucune autorisation. Si des écrans protégés deviennent noirs dans un enregistrement d'écran Android, mentionnez-le dans les notes de validation pour que personne ne le prenne pour un bug.

Puis-je protéger seulement certaines pages ?

La documentation WebViewGold décrit des réglages valables pour toute l'app, pas de réglage par page. Ce que vous contrôlez page par page, c'est la réaction : onScreenCaptureAttempt peut vérifier la route actuelle et n'afficher un avertissement que sur les pages sensibles.

Comment les utilisateurs enregistrent-ils un billet depuis mon app ChatGPT & Codex ?

Ajoutez un bouton Enregistrer dans Photos qui navigue vers takescreenshot:// dans l'app. WebViewGold enregistre le contenu actuel de la WebView dans la galerie Photos : le billet reste disponible sur place, même sans connexion.

onScreenCaptureAttempt fonctionne-t-elle avec du code React, Vue ou Svelte ?

Oui, tant que la fonction est attachée à l'objet window. Une fonction déclarée dans un composant ou dans un module ES n'est pas globale, donc WebViewGold ne peut pas la trouver ; assignez window.onScreenCaptureAttempt dans le fichier d'entrée de votre projet ChatGPT & Codex.

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 ChatGPT & Codex ?

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.