Zum Inhalt springen
WebViewGold Vibe Coding in den App Store
Deutsch
WebViewGold holen

Claude Code + Deep Links

Universal Links und App Links mit Claude Code: Öffne deine WebViewGold-App aus jedem Link

Ein Link auf deine Domain in einer E-Mail, einem Chat oder einem Magic-Link-Login sollte die App auf dem richtigen Screen öffnen, nicht einen Browser-Tab. Dafür brauchst du zwei kleine JSON-Dateien auf deinem Server, eine Capability in Xcode, einen Intent-Filter auf Android und ein paar WebViewGold-Schalter. Claude Code schreibt die Dateien, liefert sie aus und prüft sie; du trägst die IDs ein und testest auf echten Handys.

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

Welchen Link-Typ du brauchst

Universal Links (iOS) sorgen dafür, dass normale https-Links auf deine Domain die App öffnen. Sie brauchen eine apple-app-site-association-Datei (AASA) auf deinem Server, die Capability Associated Domains in Xcode und ShowExternalLink auf true in Config.swift (Doku zu Universal Links).

App Links (Android) machen dasselbe auf Android. Sie brauchen eine assetlinks.json-Datei, die belegt, dass die Domain zu deiner App gehört, einen Intent-Filter für deinen Host in der AndroidManifest.xml und IS_DEEP_LINKING_ENABLED auf true in Config.java (Doku zu App Links).

Eigene Schemata wie myapp:// gibt es auch, mit unterschiedlicher Syntax je Plattform: auf iOS myapp://url?link=https://app.example.com/page, nachdem du das URL-Schema in der Info.plist geändert hast, auf Android myapp://https://app.example.com/page mit IS_CUSTOM_SCHEME_ENABLED und einem CUSTOM_DEEPLINK_SCHEME, das zum Manifest passt. Die iOS-Doku rät, sich entweder für Universal Links oder für das eigene Schema zu entscheiden, nicht für beides. Für Links, die Menschen anklicken, ist https die bessere Wahl: Ist die App nicht installiert, öffnet derselbe Link einfach deine Website.

Keine Richtlinie verlangt Deep Links, aber sie entscheiden darüber, ob sich ein Reviewer anmelden kann. Ein Magic Link oder Passwort-Reset, der Safari statt der App öffnet, lässt die Session am falschen Ort und den Reviewer auf deinem Login-Screen hängen. Der Guide zu Magic Links erklärt diesen Fall im Detail.

Was Claude Code übernimmt und was du machst

Claude Code

Schreibt beide JSON-Dateien, die Hosting-Header und die Middleware-Ausnahmen, sorgt dafür, dass jede verlinkte Route auch beim direkten Aufruf funktioniert, und baut ein Prüfskript, das es mit curl und Node gegen dein Deployment laufen lässt.

Du

Lieferst Team ID, Bundle-ID, Package-Name und Signatur-Fingerprints, fügst Associated Domains in Xcode hinzu, passt den Host im Android-Manifest an, legst die WebViewGold-Schalter um und baust.

Apple und Google

Rufen deine Dateien nach eigenem Zeitplan ab und prüfen sie. Apple liefert die Datei über sein CDN aus, Änderungen greifen also nicht sofort; plane dafür etwas Zeit ein.

iOS und Android im Vergleich

iOS Universal LinksAndroid App Links
Server-Datei/.well-known/apple-app-site-association, ohne Dateiendung/.well-known/assetlinks.json
App-Identität in der DateiTeam ID + Bundle-IDPackage-Name + SHA-256 des Signaturzertifikats
Natives ProjektAssociated Domains: applinks:app.example.com (www separat hinzufügen, falls du es nutzt)Intent-Filter mit deinem Host in der AndroidManifest.xml, wird automatisch verifiziert
WebViewGold-SchalterShowExternalLink = trueIS_DEEP_LINKING_ENABLED = true
SchnelltestDen Link in Notizen oder Nachrichten antippenadb shell pm get-app-links und ein Tipp in Gmail oder Messages

Großartige Arbeit! Ich habe noch nie etwas programmiert, aber ich konnte damit arbeiten. Einfach und schnell! Auch mit großartiger Hilfe von den Erstellern!

Lucas Dubois · CodeCanyon

Der Claude Code Prompt

Trag zuerst deine IDs ein. Das Prüfskript aus Punkt 5 lohnt sich zu behalten: Führ es nach jeder Änderung an Hosting oder Middleware aus, oder lass es Claude Code mit /hooks als Hook registrieren.

In Claude Code einfügen
Richte Universal Links (iOS) und App Links (Android) für unsere WebViewGold-Apps auf https://app.example.com ein. Lies zuerst die Abschnitte Universal Links API sowie App Links and Deep Linking API in https://www.webviewgold.com/llms-full.txt.

Werte: Apple Team ID ABCDE12345, iOS-Bundle-ID com.example.myapp, Android-Package-Name com.example.myapp, SHA-256-Fingerprints: [App-Signaturschlüssel aus der Play Console] und [Upload-Schlüssel für lokale Test-Builds].

1. Lege public/.well-known/apple-app-site-association (ohne Dateiendung) im applinks-Format mit appIDs und components an. In der App öffnen: /app/*, /auth/callback*, /invite/*, /reset-password*. Schließe /blog/* und /pricing aus (Ausschlüsse zuerst), damit Marketingseiten im Browser bleiben.
2. Lege public/.well-known/assetlinks.json mit der Relation delegate_permission/common.handle_all_urls für unseren Package-Namen und beide Fingerprints an.
3. Liefere beide Dateien mit Status 200 und Content-Type application/json aus, ohne Weiterleitungen, Auth-Middleware, Passwortschutz oder Bot-Challenges. Stell sicher, dass unsere SPA-Catch-all-Route und die Middleware /.well-known/ nicht abfangen. Konfiguriere die Header für den Hoster, den dieses Projekt nutzt (headers in next.config.js, vercel.json, _headers bei Netlify oder Ähnliches).
4. Jede in Punkt 1 aufgeführte Route muss beim direkten Aufruf allein über die URL funktionieren: Deep Links landen auf einer URL, nicht in Client-State. Geschützte Routen leiten zum Login und danach zurück zum ursprünglichen Pfad.
5. Lege scripts/check-deep-links.mjs an: nimmt eine Basis-URL, ruft beide Dateien ab und prüft Status, Content-Type, das Fehlen von Weiterleitungen, gültiges JSON und dass die IDs mit den Werten oben übereinstimmen. Ergänze npm run check:links und führe es gegen das Preview-Deployment aus.
6. Schreibe docs/deep-links.md: die manuellen Schritte für Xcode (Capability Associated Domains mit applinks:app.example.com, ShowExternalLink true in Config.swift) und Android Studio (Host im Intent-Filter und android:autoVerify in der AndroidManifest.xml, IS_DEEP_LINKING_ENABLED in Config.java), dazu eine Liste mit Beispiel-Links für jedes Muster, die ich in Notizen einfügen oder mir selbst schicken kann, und die adb-Befehle zum Testen.

Bearbeite die nativen Projekte nicht. Berichte, was du geändert hast, und die Ausgabe des Prüfskripts.

apple-app-site-association

Das aktuelle Format mit appIDs und components. Components werden der Reihe nach ausgewertet, und der erste Treffer gewinnt, deshalb stehen die Ausschlüsse vorne. Die App ID besteht aus deiner Team ID, einem Punkt und der Bundle-ID.

json
{
  "applinks": {
    "details": [
      {
        "appIDs": ["ABCDE12345.com.example.myapp"],
        "components": [
          { "/": "/blog/*", "exclude": true, "comment": "Marketingseiten bleiben im Browser" },
          { "/": "/pricing", "exclude": true },
          { "/": "/app/*", "comment": "Alles innerhalb der Web-App" },
          { "/": "/auth/callback*", "comment": "Magic Links und OAuth-Rücksprünge" },
          { "/": "/invite/*" },
          { "/": "/reset-password*" }
        ]
      }
    ]
  }
}

assetlinks.json

Mit der Play App-Signatur signiert Google die Builds, die Nutzer installieren, entscheidend ist also der App-Signaturschlüssel, den die Play Console unter App-Integrität anzeigt. Füge zusätzlich deinen Upload-Schlüssel hinzu, wenn du lokal signierte Builds testest.

json
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.myapp",
      "sha256_cert_fingerprints": [
        "APP_SIGNING_KEY_SHA256_FROM_PLAY_CONSOLE",
        "UPLOAD_KEY_SHA256_FOR_LOCAL_BUILDS"
      ]
    }
  }
]

Die Dateien mit den richtigen Headern ausliefern (Next.js)

Statische Hoster schicken eine Datei ohne Endung oft mit einem Download-Typ aus, den Apple ignoriert. Auf Vercel ohne Next.js nutzt du den headers-Abschnitt der vercel.json, auf Netlify eine _headers-Datei.

javascript
// next.config.js  (Dateien liegen in public/.well-known/)
module.exports = {
  async headers() {
    return [
      {
        source: "/.well-known/apple-app-site-association",
        headers: [{ key: "Content-Type", value: "application/json" }],
      },
      {
        source: "/.well-known/assetlinks.json",
        headers: [{ key: "Content-Type", value: "application/json" }],
      },
    ];
  },
};

// Prüfe auch middleware.ts: "/.well-known" von Auth- und Locale-Weiterleitungen ausnehmen.

Die manuellen Schritte, der Reihe nach

Zuerst die endgültigen IDs: Bundle-ID, Package-Name und Domain sind fest in diese Dateien eingebacken.

  1. Domain und IDs festlegen

    Deep Links binden deine Domain an die Identität deiner App, entscheide also beides, bevor du anfängst. Siehe zuerst die eigene Domain und die Bundle-ID nur einmal wählen.

  2. Die Werte sammeln

    Die Apple Team ID aus den Mitgliedschaftsdetails in deinem Developer-Account, die Bundle-ID aus Xcode, den Package-Namen und den SHA-256 des App-Signaturschlüssels aus der Play Console.

  3. Prompt ausführen und deployen

    Führe danach npm run check:links https://app.example.com gegen die Produktion aus. Beide Dateien müssen bestehen, bevor du die nativen Projekte anfasst.

  4. iOS-Projekt

    Aktiviere im Apple Developer Portal Associated Domains für die App ID. Wähle in Xcode das WebViewGold-Target, öffne Signing & Capabilities, füge Associated Domains mit applinks:app.example.com hinzu (und die www-Variante, falls du darauf verlinkst) und setze ShowExternalLink in Config.swift auf true.

  5. Android-Projekt

    Ersetze in der AndroidManifest.xml den Beispiel-Host im Deep-Link-Intent-Filter durch deine Domain und stell sicher, dass er android:autoVerify="true" trägt. Setze IS_DEEP_LINKING_ENABLED in Config.java auf true.

  6. Bauen und installieren

    TestFlight und interner Test. Installiere aus den Store-Tracks, damit der Android-Build das Play-Signaturzertifikat trägt, das deine assetlinks.json nennt. Der Cloud Builder kann beide Builds erstellen, wenn du die IDEs nicht installiert hast.

Checkliste

  • curl -sI https://app.example.com/.well-known/apple-app-site-association liefert 200, application/json und keine Weiterleitung. Apple ruft die Datei über sein CDN ab; https://app-site-association.cdn-apple.com/a/v1/app.example.com zeigt die Version, die Apple gerade hat.
  • Die Digital Asset Links API von Google (digitalassetlinks.googleapis.com/v1/statements:list mit deiner Website und der Relation handle_all_urls) liefert dein Statement.
  • iPhone: Füge einen Link in Notizen ein oder schick ihn dir selbst per Nachrichten und tippe darauf: Die App öffnet sich auf dieser Seite. Langes Drücken bietet an, ihn in deiner App zu öffnen. Die URL in die Adressleiste von Safari zu tippen öffnet die App nicht; das ist so gewollt.
  • Android: adb shell pm get-app-links com.example.myapp zeigt deine Domain als verifiziert. Ein Tipp in Gmail oder Messages öffnet die App; adb shell am start -a android.intent.action.VIEW -d "https://app.example.com/app/orders/42" com.example.myapp landet auf der richtigen Seite.
  • Bei deinstallierter App öffnen dieselben Links ganz normal die Website.
  • Fordere in der App einen Magic Link oder Passwort-Reset an und öffne die E-Mail auf demselben Handy: Die App öffnet sich, und der Nutzer ist angemeldet.
  • Eine Push-Benachrichtigung, deren url auf /app/orders/42 zeigt, öffnet dieselbe Seite; siehe den Push-Guide.

Stolperfallen

  • Weiterleitungen. Leitet app.example.com auf www weiter (oder umgekehrt), scheitert die Verifizierung beim Abruf der Datei. Liefere die Datei auf jedem Host, den du aufführst, ohne Weiterleitung aus.
  • Der falsche Fingerprint. Der Upload-Schlüssel ist bei der Play App-Signatur nicht der Schlüssel, mit dem die Builds der Nutzer signiert sind. Kopiere den App-Signaturschlüssel aus der Play Console.
  • Die SPA antwortet statt der Datei. Eine Catch-all-Route liefert für /.well-known/apple-app-site-association deine index.html mit Status 200. Das Prüfskript erwischt das, weil das JSON-Parsing fehlschlägt.
  • Sicherheitsschichten. Passwortgeschützte Previews, Auth-Middleware und Bot-Challenges blockieren die Abrufe von Apple und Google genauso wie einen Fremden.
  • Caching. Apples CDN übernimmt eine geänderte AASA-Datei nicht sofort. Installiere die App nach Änderungen auf deinem Testgerät neu und lass etwas Zeit vergehen, bevor du daraus schließt, dass etwas kaputt ist.
  • PKCE-Magic-Links über Kontexte hinweg. Ein Magic Link, der in Safari auf dem Desktop angefordert und in der App geöffnet wird, kann einen PKCE-Login nicht abschließen, weil der Code Verifier in dem Browser liegt, der ihn angefordert hat. Fordere den Link dort an, wo du ihn öffnen wirst.

Häufig gestellte Fragen

Universal Links oder ein eigenes URL-Schema?

Universal Links und App Links für alles, was ein Mensch anklickt, weil sie auf deine Website zurückfallen, wenn die App fehlt. Eigene Schemata sind nützlich für Aufrufe von App zu App oder für QR-Codes, die nur in der App funktionieren sollen.

Brauche ich einen neuen Build, wenn ich die Pfade ändere?

Nicht für die Pfade in der AASA-Datei oder der assetlinks.json, die auf deinem Server liegen. Einen neuen Build brauchst du, wenn du eine Domain hinzufügst, weil die Domain Teil des Associated-Domains-Entitlements und des Android-Manifests ist.

Warum öffnet der Link Safari, wenn ich ihn auf meiner eigenen Website antippe?

In Safari bleibt ein Tipp auf einen Link zur selben Domain im Browser. Teste aus Notizen, Nachrichten oder Mail, denn dort klicken echte Nutzer.

Kann Claude Code Deep Links auf meinem Handy testen?

Es kann die Serverseite mit curl und dem Prüfskript verifizieren und schreibt die adb-Befehle für Android. Der Tipp auf einem echten Gerät ist dein Job, und der dauert zwei Minuten.

Helfen Deep Links beim App-Review?

Indirekt. Sie sorgen dafür, dass Magic Links, Passwort-Resets und geteilte Links in der App funktionieren, wodurch der Reviewer angemeldet und in der App bleibt, statt in einem Browser zu stranden.

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.

Pakete auf der Hauptseite ansehen

Full Service

$698 pro Plattform $798

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.

Full-Service-Details Powered by WeSetupYourWebViewApp

Winter-Sale-Preise gültig bis 31. Dezember 2026.

Bereit, deine App zu veröffentlichen?

App Store & Google Play Genehmigungsgarantie – oder Geld zurück innerhalb von 14 Tagen

Lieber abgeben? Full Service: Wir konfigurieren, bauen und liefern innerhalb von 72 Stunden, ab $698 pro Plattform. Fragen? Chatte mit uns – 24/7.

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.