Versionsprüfung und Force Update für deine Claude Code-App
Deine Claude Code-Web-App aktualisiert sich mit jeder Veröffentlichung, die native Hülle drumherum aber erst, wenn Nutzer eine neue Store-Version installieren. Wenn ein neues Feature eine neuere Hülle braucht oder alte Builds auf eine URL zeigen, die du abschaltest, musst du wissen, wer hinterherhinkt. WebViewGold gibt deiner Web-App die installierte Version; ein paar Zeilen Code machen daraus ein freundliches Banner oder einen harten Update-Bildschirm.
Ab $109 einmalig pro Plattform, oder unser Team erledigt alles ab $698.
Genehmigungsgarantie – oder Geld zurück innerhalb von 14 Tagen
Kein Programmieren nötig
Einmalzahlung, kostenlose Updates
24/7 Support von echten Menschen
Made in Germany seit 2014 · ISO 27001
9:41
CClaude Code
Force Update und VersionsprüfungJetzt auf dem Smartphone
App Store · Google Play Freigegeben
Wann eine alte App-Version wirklich schadet
Web-Deploys erreichen jede installierte Version beim nächsten Seitenaufruf. Nur Änderungen an der nativen Hülle lassen Nutzer zurück, und auf diese drei kommt es an:
Ein Web-Feature braucht eine neuere Hülle
Du schaltest in Version 1.3 In-App-Käufe, biometrischen Login oder einen neuen Push-Anbieter frei. Nutzer mit 1.2 sehen den Button, aber das URL-Scheme dahinter bewirkt in ihrem Build nichts. Blende das Feature für ältere Versionen aus oder ersetze es.
Der alte Build lädt eine URL, die du abschaltest
Die Start-URL ist in die App einkompiliert. Ein Umzug von einer Builder-Subdomain auf deine eigene Domain oder zu einem neuen Host lässt alte Installationen auf der alten Adresse zurück. Halte dort eine Weiterleitung aktiv und nutze die Versionsprüfung, um Nutzer zum neuen Build zu bringen.
Ein Breaking Change bei Backend oder Login
Du wechselst Auth-Anbieter, OAuth-Redirect-Domains oder das Link-Handling, und nur der neue Build hat die passenden nativen Einstellungen (Login-Helper, Universal Links, URL-Listen). Ein Update-Bildschirm ist netter als ein Login, der still scheitert.
Prompt für Claude Code
Füge das in Claude Code ein, um die Web-App-Seite umzusetzen. Prüfe das Ergebnis, veröffentliche und teste dann in der WebViewGold-App.
Prompt für Claude Code
Lies https://www.webviewgold.com/llms-full.txt (Abschnitte App Version Check API). Die Web-App läuft in WebViewGold; ihr User Agent enthält "WebViewGold-iOS" oder "WebViewGold-Android", und versionNumber enthält die installierte Version. Die nativen Projekte liegen in ./ios-app und ./android-app.
1. Setz autoInjectVariable = true in Config.swift und AUTO_INJECT_VARIABLES = true in Config.java.
2. Füge der Web-App eine Versionssperre hinzu: bis zu 3 Sekunden auf versionNumber warten, minimum, latest und storeUrl pro Plattform von einem Backend-Endpunkt holen, numerisch vergleichen, unter minimum eine Update-Seite im Vollbild und unter latest ein Banner zeigen und bei jedem Fehler durchlassen.
3. Füge Playwright-Tests hinzu, die versionNumber-Werte unter, zwischen und über den Schwellen injizieren, plus einen Lauf ohne die Variable.
4. Zähl für das nächste Release die iOS-Version und Build-Nummer sowie versionName und versionCode von Android hoch.
5. Ergänze in CLAUDE.md eine Release-Checkliste: Das Minimum erst anheben, wenn beide Store-Releases live sind und ein gestaffelter Rollout bei 100 Prozent steht.
Mit einer gut optimierten Version Ihrer Web-App können Sie innerhalb von wenigen Minuten eine beeindruckende mobile App erstellen. Zusätzlich dazu ist der Kundenservice sehr nett und hilfsbereit! Ich kann WebViewGold nur empfehlen :-)
Julian Koch · Mitbegründer von DuelDonkey · CodeCanyon
So funktioniert die Versionsprüfung von WebViewGold
Die native Seite meldet nur die Version; die Regel liegt in deinem Backend.
Die Version an deine Web-App übergeben
Setz autoInjectVariable in Config.swift und AUTO_INJECT_VARIABLES in Config.java auf true. WebViewGold stellt dann versionNumber (die Version, die Nutzer sehen, etwa 1.4.0) und bundleNumber (die Build-Nummer) als JavaScript-Variablen bereit. Ohne Auto-Injection navigierst du einmal zu getappversion:// und liest dieselben Variablen aus.
Eine Versionsregel aus deinem Backend bereitstellen
Speichere die minimal unterstützte und die neueste Version pro Plattform in deinem Backend: eine kleine Tabelle, eine JSON-Datei oder ein Remote-Config-Eintrag. Eine Änderung der Regel braucht dann kein Store-Release, im Idealfall nicht einmal ein Deploy.
Numerisch vergleichen, nicht als Text
Als Strings sortiert „1.10.0“ vor „1.9.0“. Teile an den Punkten und vergleiche jeden Teil als Zahl, oder vergleiche Build-Nummern, wenn du sie als einfach aufsteigende Ganzzahlen führst.
Hinweisen oder sperren
Unter der neuesten Version: ein wegklickbares Banner. Unter der Mindestversion: eine Vollbildseite „Update erforderlich“ mit einem einzigen Button zum Store-Eintrag. In einem normalen Browser oder bei unbekannter Version: nichts anzeigen.
Die Store-App öffnen, keine Store-Webseite
Verlinke auf https://apps.apple.com/app/idYOUR_APPLE_ID und https://play.google.com/store/apps/details?id=your.package.name und trag apps.apple.com und play.google.com in die Hosts ein, die die App immer verlassen (safariwhitelist auf iOS, BROWSER_WHITELIST auf Android), damit das System den App Store oder Play Store öffnet statt einer Webseite in der WebView.
Die Versionssperre in JavaScript
Ruf sie in deiner Claude Code-App einmal nach dem ersten Rendern auf. Sie wartet kurz auf die injizierte Variable, lässt bei jedem Fehler durch (Fail-open) und sperrt nur, wenn dein Backend es sagt. Nutze pro Plattform unterschiedliche User-Agent-Tokens, zum Beispiel „WebViewGold-iOS“ in useragent_iphone / useragent_ipad und „WebViewGold-Android“ in USER_AGENT:
javascript
const ua = navigator.userAgent;
const inApp = ua.includes("WebViewGold");
const platform = ua.includes("WebViewGold-Android") ? "android" : "ios";
function compareVersions(a, b) {
const pa = String(a).split(".").map(Number);
const pb = String(b).split(".").map(Number);
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
const d = (pa[i] || 0) - (pb[i] || 0);
if (d !== 0) return d < 0 ? -1 : 1;
}
return 0;
}
// autoInjectVariable / AUTO_INJECT_VARIABLES = true stellt versionNumber bereit;
// sonst vor dem Polling einmal window.location.href = "getappversion://" setzen
function waitForVersion(ms = 3000) {
return new Promise((resolve) => {
const start = Date.now();
(function poll() {
if (typeof versionNumber !== "undefined") return resolve(String(versionNumber));
if (Date.now() - start > ms) return resolve(null);
setTimeout(poll, 100);
})();
});
}
async function checkAppVersion() {
if (!inApp) return; // Browser: nichts zu tun
const installed = await waitForVersion();
if (!installed) return; // unbekannt: durchlassen
const rule = await fetch("/api/app-version?platform=" + platform)
.then((r) => (r.ok ? r.json() : null)).catch(() => null);
if (!rule) return; // Backend nicht erreichbar: durchlassen
if (compareVersions(installed, rule.minimum) < 0) showUpdateRequired(rule.storeUrl);
else if (compareVersions(installed, rule.latest) < 0) showUpdateBanner(rule.storeUrl);
}
Beispielregel: Minimum 1.3.0, neueste Version 1.4.0
Installiert
Ergebnis
Was der Nutzer sieht
1.4.0 oder neuer
Aktuell
Nichts
1.3.0 bis 1.3.x
Unter der neuesten Version
Ein wegklickbares Banner: „Eine neue Version ist verfügbar“
1.2.x oder älter
Unter dem Minimum
Eine Vollbildseite, die den Grund erklärt, mit einem Store-Button und einem Support-Kontakt
Browser, Preview oder unbekannte Version
Keine Daten
Nichts: durchlassen (Fail-open)
Stolperfallen, die Nutzer aussperren
Das Minimum zu früh anheben. Warte, bis der neue Build in beiden Stores veröffentlicht ist. Während eines gestaffelten Rollouts bei Google Play bekommen Nutzer außerhalb des Rollout-Anteils das Update noch nicht; Apples phasenweise Veröffentlichung staffelt nur die automatischen Updates, iPhone-Nutzer können also sofort manuell aktualisieren.
Den Build im Review sperren. Das App-Review installiert deinen neuesten Build, also sperrt ein korrekter Vergleich ihn nie. Ein fehlerhafter (String-Vergleich, falsche Plattformerkennung) zeigt dem Reviewer eine Sackgasse und bringt dir eine Ablehnung nach Guideline 2.1 ein.
Im Zweifel sperren (Fail-closed). Fehlt die Variable, läuft die Anfrage in einen Timeout oder ist das Smartphone offline, lass den Nutzer rein. Eine Update-Sperre, die versehentlich erscheint, ist schlimmer als eine alte Version.
Die Sperre für Web-Änderungen nutzen. Web-Deploys erreichen ohnehin alle. Nur native Änderungen sind ein Grund für ein Update; siehe was ein Store-Update braucht.
Keine Erklärung. Ein Satz dazu, warum das Update wichtig ist, und ein Support-Kontakt sind besser als ein nacktes „Jetzt aktualisieren“, und der Bildschirm darf nicht hinter einem Login versteckt sein.
Häufig gestellte Fragen
Erzwingt WebViewGold Updates von selbst?
Nein. WebViewGold sagt deiner Web-App, welche Version installiert ist (getappversion:// oder die automatisch injizierten Variablen versionNumber und bundleNumber). Die Entscheidung und der Update-Bildschirm liegen in deiner Web-App, sodass du die Regel jederzeit ohne Store-Release ändern kannst.
Brauche ich erzwungene Updates, wenn sich meine Web-App sofort aktualisiert?
Meist nicht. Die meisten Änderungen erreichen jeden Nutzer beim nächsten Seitenaufruf. Eine Versionsprüfung zählt bei nativen Änderungen: neue native Features, eine neue Start-URL oder Domain, geändertes Link-Handling oder geänderte Login-Einstellungen. Viele Apps kommen dauerhaft mit dem sanften Banner aus.
Erlauben Apple und Google einen Update-Bildschirm?
Keiner der beiden Stores verbietet, Nutzer um ein Update zu bitten, und viele große Apps machen das. Sorg dafür, dass der Build im Review nie gesperrt wird, erkläre ehrlich, warum das Update nötig ist, und verlinke nur auf deinen eigenen Store-Eintrag.
Kann ich den In-App-Update-Dialog von Google Play nutzen?
Google bietet für Android-Apps eine native In-App-Update-API, sie ist aber nicht Teil der dokumentierten JavaScript-Bridge von WebViewGold. Die Versionsprüfung plus ein Play-Store-Link funktioniert auf beiden Plattformen gleich und hält dich bei einem einzigen Codepfad.
Wie teste ich den Update-Bildschirm?
Setz die Mindestversion in deinem Backend vorübergehend über deinen TestFlight- oder Internal-Testing-Build, öffne die App, prüf den Bildschirm und den Store-Button und setz den Wert dann zurück. Öffne die Seite außerdem in einem normalen Browser: Dort darf der Bildschirm nie erscheinen.
Drei Wege, deine App in die Stores zu bringen
Gleiches Ergebnis, unterschiedlich viel Arbeit auf deiner Seite. Alle drei kommen mit Genehmigungsgarantie und 24/7 Support von echten Menschen.
Selbst machen
$109 pro Plattform, einmalig
Die WebViewGold-Lizenz: ein fertiges Xcode- oder Android-Studio-Projekt. URL einfügen, Name und Icon setzen, Features einschalten, bauen und einreichen. Kostenlose Updates für immer.
Kein Mac, kein Xcode, kein Android Studio: Du konfigurierst im Browser, wir bauen beide Apps in der Cloud und übergeben sie an App Store Connect und die Play Console.
Schick uns deine URL und dein Icon. Unser Team konfiguriert, baut und liefert deine App innerhalb von 72 Stunden, White-Label, inklusive Quellprojekten. Beide Plattformen für $1,158.
Erstattungen erfolgen zu den in unseren FAQ genannten Bedingungen: eine nicht inhaltsbedingte Ablehnung durch Apple und/oder Google, geltend gemacht innerhalb von 14 Tagen nach dem Kauf.