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

Claude Code

Ajouter des fonctionnalités natives avec Claude Code et le pont JavaScript WebViewGold

WebViewGold expose les capacités natives à votre web app sous forme de schémas d'URL et de quelques variables JavaScript globales. C'est un travail idéal pour un agent : indiquez la documentation à Claude Code, dites-lui quelles fonctionnalités vous avez activées, et il les branche sur vos composants existants. Voici comment procéder sans noms d'API inventés.

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

Comment fonctionne le pont

Votre web app demande une action au wrapper en naviguant vers un schéma, par exemple window.location.href = "bioauth://". Le wrapper intercepte la navigation, exécute l'action native et renvoie le résultat soit en appelant une fonction globale que vous avez définie (onBioAuthSuccess()), soit en injectant une variable globale (onesignalplayerid, nativePushEnabled, barcodescanresult), soit en chargeant une URL (le scanner QR ouvre l'URL scannée dans l'app). Aucun SDK à installer, rien à empaqueter.

Tout est documenté dans un seul fichier lisible par les machines : webviewgold.com/llms-full.txt. Demandez à Claude Code de lire la section concernée avant d'écrire du code, et il utilisera les noms de schémas exacts plutôt que des noms qui sonnent juste. Chaque schéma de cet article a été vérifié dans ce fichier.

Le prompt d'intégration

Adaptez la liste des fonctionnalités à ce que vous avez activé dans Config.swift et Config.java.

À coller dans Claude Code
Notre web app tourne aussi dans des apps natives iOS et Android construites avec WebViewGold. Les fonctionnalités natives se déclenchent en naviguant vers des schémas d'URL, et les résultats reviennent sous forme de variables JavaScript globales ou de fonctions de callback globales. Avant d'écrire la moindre ligne de code, récupérez https://www.webviewgold.com/llms-full.txt et lisez les sections suivantes : Push Notifications API, Biometric Authentication API, QR Code Scanner API, App Sharing Dialog API, Haptic Feedback API, File Downloader API, HTML5 Geolocation API. N'utilisez que des noms de schémas qui figurent dans ce fichier.

Implémentez ensuite, dans src/lib/native.ts : isNativeApp() (le user agent contient le jeton WebViewGoldApp), callNative(scheme) (définit window.location.href uniquement quand isNativeApp() vaut true, sinon renvoie false) et un helper readInjected(name, timeoutMs) qui attend une variable globale injectée par le wrapper.

Branchez ces fonctionnalités sur l'interface existante, chacune derrière isNativeApp() avec une solution de repli web :
1. Push : un bouton Activer les notifications qui appelle registerpush://, une ligne dans les réglages qui appelle checkNativePushPermissions:// et lit nativePushEnabled, et après la connexion un appel à getonesignalplayerid:// qui lit onesignalplayerid et l'enregistre sur le profil utilisateur via notre API.
2. Biométrie : un verrou Face ID / empreinte digitale pour la route /wallet avec bioauth:// et les trois callbacks onBioAuthSuccess, onBioAuthFailure(errorCode, errorMessage), onBioAuthUnavailable ; si la biométrie est indisponible, revenez à la nouvelle saisie du mot de passe que nous avons déjà.
3. Check-in par QR : un bouton Scanner qui appelle qrcode:// ; nos QR codes contiennent des URL de notre propre domaine, donc gérez la route /checkin qu'ils ouvrent.
4. Partage : remplacez le bouton de copie du lien par shareapp://message?=TEXT&url=URL en natif, avec encodeURIComponent sur les deux valeurs.
5. Haptique : successhaptic:// après une commande finalisée, errorhaptic:// en cas d'erreur de validation d'un formulaire, lighthaptic:// lors des changements d'onglet. Sur iOS, utilisez la technique de l'iframe décrite dans la documentation pour que l'haptique n'interrompe pas la navigation.
6. Téléchargements : les téléchargements d'images utilisent savethisimage://?url=IMAGE_URL ; les liens PDF restent des liens normaux.
7. Géolocalisation : gardez navigator.geolocation, mais affichez la première fois un écran d'explication avant la demande d'autorisation.
Indiquez quelles options de Config.swift / Config.java et quelles entrées d'Info.plist ou d'AndroidManifest je dois activer pour chaque fonctionnalité.

Le helper sur lequel l'agent doit s'appuyer

Petit, indépendant de tout framework, et seul endroit du code qui connaît le user agent.

javascript
// src/lib/native.ts
export function isNativeApp() {
  return typeof navigator !== "undefined" && navigator.userAgent.indexOf("WebViewGoldApp") !== -1;
}

export function callNative(scheme) {
  if (!isNativeApp()) return false;
  window.location.href = scheme;
  return true;
}

// Wait for a variable the wrapper injects, e.g. onesignalplayerid or nativePushEnabled
export function readInjected(name, timeoutMs) {
  return new Promise(function (resolve, reject) {
    var started = Date.now();
    (function check() {
      if (typeof window[name] !== "undefined") return resolve(window[name]);
      if (Date.now() - started > (timeoutMs || 3000)) return reject(new Error(name + " not injected"));
      setTimeout(check, 100);
    })();
  });
}

Je suis très content d'avoir acheté cette application ! Extrêmement facile et excellente documentation. J'ai été en contact avec le service client, ils ont répondu très rapidement et très amicalement. Ils ont résolu ma question en un jour. 10/10 recommanderaient.

Nelis Geiger · CodeCanyon

Push : autorisation, état et ID utilisateur

Nécessite un service push activé dans le wrapper (OneSignal via kPushEnabled et oneSignalID dans Config.swift, PUSH_ENABLED plus les ID dans build.gradle sur Android). Réglez askforpushpermissionatfirstrun (iOS) et requirePush (Android) sur false pour choisir vous-même le moment de la demande.

javascript
import { callNative, readInjected } from "./native";

// 1. Ask at the right moment (after onboarding, not on first launch)
export function askForPush() {
  return callNative("registerpush://");
}

// 2. Is push currently allowed? Sets window.nativePushEnabled
export async function isPushEnabled() {
  if (!callNative("checkNativePushPermissions://")) return null;
  return readInjected("nativePushEnabled", 2000);
}

// 3. Store the OneSignal subscription ID on the user so the server can target this device
export async function syncPushId(saveToProfile) {
  if (!callNative("getonesignalplayerid://")) return;
  var id = await readInjected("onesignalplayerid", 3000);
  await saveToProfile(id);
}

// 4. A local reminder in two hours, no push service needed
export function scheduleLocalReminder(title, message, url) {
  var seconds = 2 * 60 * 60;
  callNative("sendlocalpushmsg://push.send?s=" + seconds + "=msg!" + message + "&!#" + title + "&!#" + url);
}

Biométrie : bioauth:// et ses trois callbacks

Sur iOS, le projet a besoin de la description d'utilisation de Face ID dans Info.plist (NSFaceIDUsageDescription) ; Android utilise le BiometricPrompt du système et n'a besoin de rien d'autre. Le wrapper appelle les fonctions globales, donc définissez-les sur window.

javascript
import { callNative } from "./native";

export function requireBiometrics(onPass, onFallback) {
  window.onBioAuthSuccess = function () { onPass(); };
  window.onBioAuthFailure = function (errorCode, errorMessage) {
    console.warn("bioauth failed", errorCode, errorMessage);
    onFallback();
  };
  window.onBioAuthUnavailable = function () { onFallback(); };
  if (!callNative("bioauth://")) onFallback(); // browser: use the password re-entry instead
}

// Security note from the documentation: treat the success callback as a UI gate only.
// Keep sensitive actions behind a server-side session check as well.

Les autres fonctionnalités, en une ligne chacune

Scanner de QR codes

qrcode:// ouvre le scanner natif et charge l'URL scannée dans l'app : encodez donc des URL de votre propre domaine. Pour les codes-barres de produits, utilisez barcodescanner:// et lisez barcodescanresult.

Feuille de partage

shareapp://message?=TEXT&url=URL ouvre la boîte de dialogue de partage du système sur les deux plateformes. Encodez les deux valeurs. Sur Android, l'API ShareIntent permet en plus aux autres apps de partager du contenu vers la vôtre.

Haptique

lighthaptic://, heavyhaptic://, successhaptic://, warninghaptic://, errorhaptic:// ; mediumhaptic:// est réservé à iOS. La documentation montre un helper à base d'iframe pour que l'appel n'annule pas une navigation en cours.

Téléchargements

savethisimage://?url=… enregistre une image dans la photothèque. Les liens se terminant par .pdf, .docx, .xlsx, .mp3 et les autres extensions listées se téléchargent nativement ; étendez la liste avec extentionARY (Config.swift) ou downloadableExtension (Config.java), ou activez autodownloader / AUTO_DOWNLOAD_FILES pour les en-têtes Content-Disposition.

Géolocalisation

Le simple navigator.geolocation fonctionne ; le wrapper affiche la boîte de dialogue d'autorisation native. iOS exige HTTPS et le texte de description d'utilisation de la localisation dans Info.plist, Android exige requireLocation réglé sur true dans Config.java, avec les entrées correspondantes dans le manifest.

Quel réglage du wrapper pour quelle fonctionnalité

FonctionnalitéiOS (Config.swift / projet)Android (Config.java / projet)
Push (OneSignal)kPushEnabled, oneSignalID ; documentationPUSH_ENABLED, ID dans build.gradle ; documentation
BiométrieDescription d'utilisation de Face ID dans Info.plist ; documentationAucun réglage nécessaire ; documentation
QR / code-barresDescription d'utilisation de la caméra ; qrcodelinks détermine où s'ouvrent les URL scannées ; documentationrequireCamera, QR_CODE_URL_OPTIONS ; documentation
Partage, haptiqueRien à activer ; documentationRien à activer ; documentation
TéléchargementsextentionARY, autodownloader ; documentationdownloadableExtension, AUTO_DOWNLOAD_FILES, requireStorage ; documentation
GéolocalisationDescription d'utilisation de la localisation dans Info.plist ; documentationrequireLocation ; documentation

Questions fréquentes

Claude Code a-t-il besoin d'un accès à Internet pour lire llms-full.txt ?

Il doit récupérer le fichier une fois. Si votre configuration bloque l'accès web, téléchargez le fichier dans le dépôt (par exemple docs/webviewgold-llms-full.txt) et référencez ce chemin dans CLAUDE.md.

Pourquoi enregistrer l'ID d'abonnement OneSignal sur l'utilisateur ?

Parce que le serveur peut alors envoyer une notification push à une personne précise (commande expédiée, nouvelle réponse). Sans cet ID, vous ne pouvez envoyer qu'à des segments.

L'agent peut-il aussi activer les fonctionnalités dans les projets WebViewGold ?

Oui, pour les valeurs de Config.swift et Config.java et les textes d'autorisation. Gardez la signature et le provisioning hors de sa portée ; le guide de configuration des projets explique où placer la limite.

Que se passe-t-il si j'appelle un schéma pour une fonctionnalité désactivée ?

Rien de visible. registerpush:// sans service push actif, par exemple, n'a aucun effet. Activez d'abord la fonctionnalité dans le wrapper, puis testez l'appel.

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.