Externe Links und URL-Handling in deiner Cursor-App
Im Web funktioniert ein Link zu Stripe, zum Google-Login, zu WhatsApp oder zu deinem Hilfe-Center einfach. In einer App braucht jeder Link ein Ziel: die App selbst, einen In-App-Browser-Tab, Safari oder Chrome oder eine andere App wie Mail, Telefon oder WhatsApp. Liegst du daneben, stranden Nutzer auf einer fremden Seite ohne Zurück-Button, sind am falschen Ort eingeloggt oder bezahlen im Browser, während die App wartet.
Die Success-URL führt mit intakter Session zurück auf deine Domain
Externe Links in der App behalten (Option 0) oder diese Hosts als Ausnahmen eintragen, die nie im Browser öffnen (safariblacklist, BROWSER_BLACKLIST)
Google- und Facebook-Login
Social Login Helper
Google blockiert eingebettete WebViews; der Helper führt diesen Schritt in einem akzeptierten Login-Fenster aus und kehrt zurück
google_login_helper_triggers / GOOGLE_LOGIN_HELPER_TRIGGERS; Android bietet zusätzlich das Präfix googlelogin:// für einen Chrome Custom Tab
AGB, Hilfe-Center, Doku, Blog auf anderen Domains
In-App-Tab
Adressleiste und Schließen-Button; die App bleibt darunter
alwaysOpenInInAppTab / ALWAYS_OPEN_IN_INAPP_TAB oder target="_blank" mit der Special-Link-Option auf 1
WhatsApp (wa.me), Instagram, YouTube, X, TikTok
Deren App oder der System-Browser
Dort sind Nutzer eingeloggt, nicht in deiner WebView
safariwhitelist / BROWSER_WHITELIST
mailto:, tel:, sms:
Mail, Telefon, Nachrichten
System-Schemes, vom Smartphone verarbeitet
Standard-Links nutzen; WebViewGold reicht sie an das System weiter
Links zu App Store und Google Play
Die Store-App
Updates, Bewertungen, deine anderen Apps
apps.apple.com und play.google.com auf der Liste für immer extern
Prompt für Cursor
Füge das in Cursor ein, um die Web-App-Seite umzusetzen. Prüfe das Ergebnis, veröffentliche und teste dann in der WebViewGold-App.
Prompt für den Cursor-Agenten
Diese Web-App läuft im nativen Wrapper von WebViewGold (ihr User Agent enthält "WebViewGold").
1. Durchsuche die Codebasis nach window.open, target="_blank", absoluten http- und https-Links, mailto:, tel:, wa.me und Server-Redirects.
2. Erstelle eine Tabelle: Host, wo er genutzt wird, vorgeschlagenes Ziel (App, In-App-Tab, System-App) und warum.
3. Gib aus der Tabelle die Werte für safariwhitelist und alwaysOpenInInAppTab (iOS) sowie für BROWSER_WHITELIST und ALWAYS_OPEN_IN_INAPP_TAB (Android) aus.
4. Stell Checkout- und Login-Abläufe auf Navigation im selben Fenster um (window.location.href oder Server-Redirects).
5. Füge einen Playwright-Test mit WebViewGold-User-Agent hinzu, der prüft, dass der Checkout-Button nicht window.open aufruft.
6. Ergänze in .cursor/rules: nie window.open für Checkout oder Auth; externe Hilfeseiten nutzen target="_blank".
Ich bin sehr glücklich, dass ich diese App gekauft habe! Extrem einfach und großartige Dokumentation. Ich stand in Kontakt mit dem Kundenservice, sie antworteten sehr schnell und sehr freundlich. Sie lösten meine Frage innerhalb eines Tages. 10/10 würde ich empfehlen.
Drei Link-Klassen und die Schalter, die sie steuern
Interne Links
Gleiche Domain wie dein konfigurierter Host. Sie laden in der Haupt-WebView, deshalb sollte die Start-URL deine Produktionsdomain sein. Teste die Subdomains, die du für Auth, Checkout oder die API nutzt, ausdrücklich; ob sie als intern gelten, hängt vom konfigurierten Host ab.
Externe Links
Jede andere Domain. Option 0 behält sie in der App. iOS kann sie mit externalLinkHandlingOptions = 2 an Safari schicken; Android ergänzt für EXTERNAL_LINK_HANDLING_OPTIONS die Werte 1 (In-App-Tab) und 2 (System-Browser). Listen pro Host überschreiben den Standard: safariwhitelist, safariblacklist und alwaysOpenInInAppTab auf iOS, BROWSER_WHITELIST, BROWSER_BLACKLIST und ALWAYS_OPEN_IN_INAPP_TAB auf Android.
Special Links
Links mit target="_blank" (auf Android auch Links, die auf # enden). specialLinkHandlingOptions und SPECIAL_LINK_HANDLING_OPTIONS: 0 Haupt-WebView, 1 In-App-Tab, 2 Browser. Auf Android zwingt ein Präfix newtab: einen einzelnen Link in dieses Verhalten. Bei Links, die zugleich special und extern sind, folgt Android der Special-Link-Einstellung, während externalLinkHandlingOptions = 2 sie auf iOS trotzdem an Safari schickt; behalte dort also 0, wenn du den In-App-Tab willst.
Link-Handling für eine Cursor-App einrichten
Rund 15 Minuten mit einer Link-Inventur, dann ein Test auf echten Smartphones.
Jeden ausgehenden Link deiner Cursor-App auflisten
Klick dich durch oder durchsuche den Code: Checkout und Billing-Portal, Login-Anbieter, Social-Media-Profile, Support-Chat, rechtliche Seiten, Store-Badges, mailto:- und tel:-Links, Karten. Notier für jeden das Ziel anhand der Tabelle oben.
Den Standard festlegen
Für die meisten Apps: externe Links in der App behalten (Option 0 auf beiden Plattformen) und die Ausnahmen gezielt umleiten. Alle externen Links an den Browser zu schicken, bricht Zahlungs- und Login-Redirects, die in die App zurückkommen müssen.
Die Ausnahmen eintragen
Social-Apps, WhatsApp und Store-Links in safariwhitelist (iOS) und BROWSER_WHITELIST (Android); AGB, Doku und Hilfe-Center in alwaysOpenInInAppTab und ALWAYS_OPEN_IN_INAPP_TAB; Zahlungs- und Auth-Hosts in die Nie-im-Browser-Listen, falls dein Standard der Browser ist. Trag die Hosts genau so ein, wie du sie verlinkst, ohne https://.
Den Login-Helper einschalten
Trag https://accounts.google.com in google_login_helper_triggers (iOS) und GOOGLE_LOGIN_HELPER_TRIGGERS (Android) ein. Schick Google nicht einfach an Safari: Die Session landet sonst in Safari, nicht in der App (die Lösung für disallowed_useragent).
Digitale Käufe getrennt behandeln
Stripe für physische Waren und reale Dienstleistungen kann in der App bleiben. Für Abos oder Credits, die in der App genutzt werden, erwartet Apple außerhalb der regionalen Ausnahmen In-App-Käufe (Guideline 3.1.1) und Google Play Billing, also blende diesen Checkout in der App aus (Stripe oder In-App-Kauf).
Jeden Link-Typ testen
Lade https://www.webviewgold.com/demo/testlinks.php als vorübergehende Start-URL, um zu sehen, wie sich jede Art von Link verhält, und tippe dann jeden ausgehenden Link deiner echten App auf einem iPhone und einem Android-Smartphone an, inklusive einer vollständigen Testzahlung.
Eine typische Startkonfiguration
Nur die Werte: Behalte die Syntax bei, die die Zeilen in deiner Config.swift und Config.java bereits verwenden. Auf Android nimmt ALWAYS_OPEN_IN_INAPP_TAB URL-Präfixe; die anderen Listen nehmen Hosts.
Die Link-Bugs, mit denen Vibe-Coding-Apps ausgeliefert werden
Checkout im Browser. Stripe öffnet in Safari oder Chrome, die Zahlung klappt, die Erfolgsseite lädt im Browser, und die App zeigt weiter den unbezahlten Zustand. Behalte den Checkout in der App oder hol die Return-URL mit Universal Links zurück (siehe Deep-Link-Guide).
Checkout in einem Pop-up. Code, der den Checkout mit window.open oder target="_blank" öffnet, macht daraus einen Special Link, also lädt die Erfolgsseite im In-App-Tab statt in der App. Navigiere stattdessen mit window.location.href.
Ein Link zum Billing-Portal für digitale Tarife in der iOS-App. Außerhalb der regionalen Ausnahmen kann Apple das als Lenkung weg vom In-App-Kauf werten (Guideline 3.1.1). Zeig ihn nur im Web.
Eine fremde Seite ohne Weg zurück. iPhones haben keinen Zurück-Button. Alles, was nicht deine App ist, gehört in den In-App-Tab oder in eine andere App.
WhatsApp-, Instagram- oder Karten-Links, die deren Website in der App laden, oft hinter einer Login-Wand. Schick diese Hosts an das System, damit die echte App öffnet.
Alles öffnet in Safari. Eine App, die sich ständig selbst verlässt, wirkt wie ein Lesezeichen, und genau dieser Eindruck steckt hinter vielen Ablehnungen nach Guideline 4.2.
Häufig gestellte Fragen
Warum verliert mein Stripe-Checkout in der App die Session?
Meist, weil der Checkout in Safari oder Chrome geöffnet wurde: Die Zahlung klappt, aber die Success-URL lädt im Browser, wo der Nutzer nicht eingeloggt ist. Behalte checkout.stripe.com in der Haupt-WebView (Option 0 für externe Links) und navigiere mit window.location.href, damit der Redirect wieder in der App landet.
Funktionieren mailto:-, tel:- und WhatsApp-Links in der App?
mailto:-, tel:- und sms:-Links werden an Mail, die Telefon-App und Nachrichten übergeben. Für WhatsApp trägst du wa.me und api.whatsapp.com in die Liste für immer extern ein (safariwhitelist, BROWSER_WHITELIST), damit die WhatsApp-App öffnet statt der WhatsApp-Website in deiner App. Teste jeden davon auf einem echten Smartphone.
Was ist der In-App-Tab?
Eine Browser-Ansicht, die sich mit Adressleiste und Navigations-Buttons über deiner App öffnet. Nutzer lesen die Seite und schließen sie, um genau dort weiterzumachen, wo sie waren. Das ist der richtige Ort für AGB, Hilfeartikel und andere Inhalte von Dritten.
Kann ich alle externen Links in Safari oder Chrome öffnen?
Ja (externalLinkHandlingOptions = 2 auf iOS, EXTERNAL_LINK_HANDLING_OPTIONS = 2 auf Android), aber dann musst du jeden Zahlungs-, Login- und API-Host als Nie-im-Browser-Ausnahme eintragen (safariblacklist, BROWSER_BLACKLIST), sonst landen Redirects, die für deine App gedacht sind, im Browser.
Darf die iOS-App auf meine Preisseite im Web verlinken?
Für digitale Güter erlaubt Apple in der Regel keine Buttons oder Links zu externen Käufen. Für bestimmte Regionen gibt es Ausnahmen, etwa den US-Storefront nach dem Gerichtsbeschluss von 2025 und die alternativen Bedingungen in der EU, und sie ändern sich. Prüf den aktuellen Text von Guideline 3.1.1 in App Store Connect, bevor du dich auf eine davon verlässt.
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.