App mit Claude Code erstellen: iPhone-Tutorial
Von Mehdi Azizi
Aktualisiert am , 15 Min.
Claude Code installieren, Expo-Projekt anlegen, CLAUDE.md schreiben, Screen für Screen prompten und mit EAS auf TestFlight: das komplette Tutorial.
Eine App mit Claude Code erstellen: die kurze Antwort
Um eine App mit Claude Code zu erstellen, brauchst du einen kostenpflichtigen Zugang zu Claude Code (passendes Abo oder Console mit nutzungsbasierter Abrechnung), Node.js, ein iPhone mit Expo Go und ein Expo-Projekt. Du schreibst eine CLAUDE.md-Datei, die deinen Stack und deine Regeln beschreibt, forderst einen Screen nach dem anderen an, testest jeden Screen auf deinem iPhone und schickst die App dann mit EAS auf TestFlight.
Dieses Tutorial ergänzt meinen Guide eine iOS-App mit KI erstellen, der erklärt, was die KI gut kann und wo sie danebenliegt. Hier geht es um die Praxis: Befehle, Dateien, Prompts.
Ich programmiere meine iOS-Apps jeden Tag mit Claude Code und Cursor. Mein Stack: React Native, Expo, EAS, RevenueCat und Supabase. Solys, ein Wecker mit Minispielen, und TradaZen, eine Trainings-App fürs Trading, sind im App Store veröffentlicht. Nolera und Clic wurden von Apple abgelehnt und dann korrigiert. Alles, was folgt, stammt aus dieser Arbeit.
Wenn du diese Methode an einer veröffentlichten App sehen willst: Ich habe den Weg von TradaZen dokumentiert, vom ersten Commit bis zu Apples Ablehnungen und den Pivots. Dieser Erfahrungsbericht ergänzt die Schritte des Tutorials.
Schritt 1: Die Voraussetzungen zusammentragen
Bevor du den ersten Befehl eintippst, prüf, ob du das alles hast.
Ein kostenpflichtiger Claude-Account
Claude Code ist nicht im kostenlosen Angebot von claude.ai enthalten. Laut der Dokumentation von Anthropic brauchst du einen Pro-, Max-, Team-, Enterprise- oder Console-Account. Mit Pro kannst du im Rahmen der Nutzungslimits loslegen.
Node.js und ein Terminal
Expo verlangt Node.js in der LTS-Version, auf macOS, Windows oder Linux. Claude Code läuft auf macOS 13 oder neuer, Windows 10 oder neuer und den gängigen Linux-Distributionen.
Ein iPhone und Expo Go
Installier Expo Go aus dem App Store auf deinem iPhone, um deine ersten Screens auszuprobieren, ohne deine eigene App zu kompilieren. Bevor du das Projekt anlegst, prüf auf der Expo-Go-Seite, welche SDK-Version zu deiner Installation passt. Das neueste SDK und die im App Store verteilte Version sind nicht immer gleichzeitig verfügbar: Expo hat zum Beispiel diesen Versatz im Mai 2026 dokumentiert. Verlass dich also nicht auf eine Versionsnummer aus einem alten Tutorial. Wenn du eigene native Module nutzen willst, plan einen Development Build ein.
Ein Mac? Nicht nötig
iOS-Builds werden mit EAS Build auf den Servern von Expo kompiliert, mit der Xcode-Version, die dein Expo-SDK vorgibt (ITMS-90725), und EAS Submit läuft auf macOS, Linux und Windows. Du kommst also von einem PC aus bis zu TestFlight. Der Guide eine iOS-App ohne Mac veröffentlichen beschreibt diese Kette im Detail.
Ein Apple-Developer-Account, später
Zum Programmieren und Testen im Expo Go aus dem App Store brauchst du ihn nicht. Pflicht wird er, sobald du deine App auf TestFlight schickst. Dazu mehr in Schritt 7.
Schritt 2: Claude Code installieren
Unter macOS, Linux oder WSL empfiehlt Anthropic den nativen Installer:
curl -fsSL https://claude.ai/install.sh | bash
Unter Windows, in PowerShell:
irm https://claude.ai/install.ps1 | iex
Prüf danach, ob die Installation geklappt hat:
claude --version
Wenn du lieber npm nutzt, lautet der Befehl npm install -g @anthropic-ai/claude-code. Setz kein sudo davor, die Dokumentation rät ausdrücklich davon ab.
Beim ersten Start von claude öffnet sich ein Browser, damit du dich mit deinem Account verbindest. Danach schreibst du ganz normal auf Deutsch: Claude liest deine Dateien, schlägt Änderungen vor und führt Befehle aus, mit deiner Zustimmung.
Schritt 3: Das Expo-Projekt anlegen
Wechsle in den Ordner, in dem du deine Projekte ablegst, und starte:
npx create-expo-app@latest mon-app
cd mon-app
npx expo start
Wenn das Tool dich zwischen Kompatibilität mit dem Expo Go aus dem App Store und dem neuesten SDK wählen lässt, nimm für diese Übung die Kompatibilität. Prüf in jedem Fall, ob die erstellte Version von dem Expo Go auf deinem iPhone unterstützt wird, bevor du weitermachst. Einen Development Build kannst du vorbereiten, sobald dein Projekt ihn braucht.
Im Terminal erscheint ein QR-Code. Scann ihn mit der Kamera deines iPhones: Die App öffnet sich in Expo Go. Ein Detail blockiert beim ersten Mal oft: Expo Go öffnet dein Projekt nur, wenn Expo CLI und Expo Go mit demselben Expo-Account verbunden sind. Führ npx expo login auf deinem Rechner aus und melde dich in der App mit demselben Account an.
Warum Expo statt Swift? Claude kennt React Native sehr gut, und du testest ohne Mac. Ich erkläre diese Wahl auf der Seite React Native und Expo für eine mobile App.
Behalte eine Grenze von Expo Go im Kopf: Es enthält nur die nativen Module, die schon eingebaut sind. Sobald du eine native Library hinzufügst, die es nicht kennt, zum Beispiel In-App-Käufe, brauchst du einen Development Build. Für die ersten Screens ist das kein Problem.
Die richtige Testumgebung wählen
Expo Go, ein Development Build und TestFlight beweisen nicht dasselbe. Expo beschreibt den Development Build als deine eigene Test-App mit den nativen Modulen, die dein Projekt braucht.
| Was du prüfen willst | Wo du testest | Grenzen des Tests |
|---|---|---|
| Einen ersten Screen anzeigen und seine Navigation ausprobieren | Expo Go, mit kompatiblem SDK | Das Verhalten nativer Module, die in Expo Go fehlen |
| Eine zum Projekt hinzugefügte native Library nutzen | Ein Development Build, der diese Library enthält | Weder die verteilte Version noch ihre Annahme durch Apple |
| Die App für Tester durchgehen und dann ihre Käufe testen | Ein auf TestFlight hochgeladener Build und korrekt konfigurierte Produkte | Weder eine echte Kundenzahlung noch die Freigabe für den Verkauf |
Bevor du eine Abhängigkeit hinzufügst, frag Claude: „Ist sie mit meinem SDK und meiner aktuellen Testumgebung kompatibel? Muss die App neu kompiliert werden? Stütz deine Antwort auf die Dokumentation.“ So verbringst du keinen Abend damit, ein Modul zu reparieren, das Expo Go schlicht nicht laden kann, oder ein SDK, das beim Upload wegen einer nicht öffentlichen API abgelehnt wird.
Schritt 4: Die CLAUDE.md des Projekts schreiben
Das ist der Schritt, der sich am meisten lohnt. Claude Code kann ein Projektgedächtnis behalten, aber du musst die Regeln ausformulieren. Die Datei CLAUDE.md im Projektstamm liefert Anweisungen, die für alle Sessions gelten. Dort schreibst du hin, was Claude nicht erraten kann.
Starte im Projektordner claude und tipp dann /init. Laut der Dokumentation analysiert Claude das Projekt und erzeugt eine erste CLAUDE.md mit den Befehlen und Konventionen, die es findet. Danach ergänzt du sie um deine Regeln. Anthropic empfiehlt, unter 200 Zeilen zu bleiben: Je länger die Datei, desto schlechter werden die Anweisungen befolgt.
Hier ein kurzes Beispiel, nah an dem, was ich nutze:
# Meine App
## Stack
- Expo (SDK von create-expo-app), React Native, TypeScript strict
- Navigation: Expo Router, eine Datei pro Screen in app/
- Daten: Supabase (später), niemals ein Secret Key in der App
## Regeln
- Ein Screen nach dem anderen. Keine Dateien außerhalb der Anfrage anfassen.
- Keine festen Höhen in Punkten: Größen relativ zum Bildschirm,
ScrollView, wenn der Inhalt überlaufen kann.
- Jeder Screen behandelt 3 Zustände: Laden, leer, Fehler.
- Texte der Oberfläche auf Deutsch mit korrekten Umlauten.
- Bevor du mehr als 2 Dateien änderst: einen Plan vorschlagen und auf meine Zustimmung warten.
## Befehle
- Starten: npx expo start
- Tests: das Skript nehmen, das wirklich in package.json steht.
Wenn es noch nicht existiert, das melden; keine erfolgreichen Tests behaupten.
- Typen: npx tsc --noEmit
- Nach jeder Änderung: Tests und Typen ausführen, dann sagen,
was sich geändert hat und wie ich es auf dem iPhone prüfe.
Die Regel zu festen Höhen steht da nicht zufällig. Dazu mehr in Schritt 6.
Schritt 5: Einen Screen nach dem anderen prompten
„Bau mir eine Habit-Tracker-App mit Abo“ erzeugt ein riesiges, fragiles Projekt, das sich nicht mehr durchlesen lässt. Die Methode, die funktioniert, ist das Gegenteil: eine Anfrage, ein Screen, ein Ergebnis, das du in fünf Minuten testen kannst.
Fang mit einem Plan an
Für alles, was mehrere Dateien betrifft, wechsle in den Plan-Modus. Drück Shift+Tab, bis in der Statusleiste plan mode on steht. In diesem Modus liest Claude die Dateien und schlägt einen Plan vor, ändert aber nichts ohne deine Zustimmung. Du liest, korrigierst und gibst dann frei.
Ein erster Prompt zum Abstecken des Rahmens sieht so aus:
Ich will eine Habit-Tracker-App. Version 1: eine einzige Funktion,
die Gewohnheiten des Tages abhaken. Schlag die Liste der Screens und die
Ordnerstruktur vor. Programmier noch nichts.
Beschreib den Screen, seine Zustände und seine Grenzen
Danach ein Prompt pro Screen. Je mehr Grenzfälle du benennst, desto seltener vergisst Claude sie:
Erstelle den Screen app/index.tsx, der die Gewohnheiten des Tages auflistet.
- Jede Zeile: Name der Gewohnheit, Checkbox, aktuelle Serie.
- Leerer Zustand: ein Text und ein Button „Gewohnheit hinzufügen“.
- Ladezustand und Fehlerzustand mit einem Button „Erneut versuchen“.
- Die Daten kommen vorerst aus einem lokalen Array.
- Muss auf einem iPhone SE genauso passen wie auf dem größten iPhone:
keine feste Höhe, die Liste scrollt.
Führ am Ende die Tests und die Typprüfung aus.
Korrigieren, ohne alles neu schreiben zu lassen
Wenn ein Detail nicht stimmt, bleib präzise und begrenze den Umfang:
Auf meinem iPhone rutscht der Button „Gewohnheit hinzufügen“ unter die
untere Leiste, wenn die Liste lang ist. Behebe nur dieses Problem in
app/index.tsx, ohne andere Dateien anzufassen. Erklär die Ursache.
Du kannst auch einen Screenshot ins Terminal einfügen: Claude liest ihn.
Übung: eine Gewohnheit, die nach dem Neustart abgehakt bleibt
Das ist eine Lernübung für dein eigenes Projekt, keine Aufnahme einer bereits ausgelieferten Funktion. Ziel ist es, von einem generierten Screen zu einem überprüfbaren Verhalten zu kommen. Sie braucht weder Benutzerkonto noch In-App-Kauf.
- Behalte eine einzige lokale Gewohnheit namens „10 Minuten lesen“.
- Fordere eine Checkbox und eine lokale Speicherung an, die zu deinem Expo-Projekt passt.
- Lass den Agenten die geänderten Dateien, eine eventuelle Abhängigkeit und die tatsächlich ausgeführten Befehle angeben.
- Installier oder öffne deine App auf dem iPhone und führ dann die Prüfungen unten durch.
Mach auf Basis des bestehenden Screens die Gewohnheit „10 Minuten lesen“
abhakbar und behalte ihren Zustand nach dem Schließen und erneuten Öffnen der App.
Nutze den lokalen Speicher, der zu den Abhängigkeiten des Projekts passt.
Erstelle weder Account noch Server noch Abo noch zusätzliche Statistiken.
Erklär vor dem Programmieren, wie du das Laden und einen Fehler beim
Lesen oder Speichern behandelst. Mach danach eine begrenzte Änderung.
Am Ende: geänderte Dateien, ausgeführte Befehle, nicht getestete Grenzen
und die genauen Schritte, um das Ergebnis auf dem iPhone zu prüfen.
| Aktion auf deinem iPhone | Erwartetes Ergebnis | Wenn es fehlschlägt |
|---|---|---|
| Die App zum ersten Mal öffnen | Gewohnheit und Checkbox sind sichtbar, ohne Fehler | Anfangszustand und Laden aus dem Speicher prüfen |
| Abhaken, dann die App schließen und neu öffnen | Die Gewohnheit bleibt abgehakt | Schreiben und anschließendes Lesen desselben Keys kontrollieren |
| Haken entfernen, dann neu starten | Die Gewohnheit bleibt nicht abgehakt | Prüfen, ob der Wert false ebenfalls gespeichert wird |
| Den Ablauf im Flugmodus wiederholen | Die lokale Funktion bleibt verfügbar | Eine grundlos hinzugefügte Netzwerkabhängigkeit aufspüren |
| Die Textgröße erhöhen | Name und Bedienelement bleiben zugänglich | Einschränkungen entfernen, die die Aktion abschneiden oder verdecken |
Verlang nicht „schreib alles neu“, wenn eine Zeile fehlschlägt. Beschreib die Aktion, das erwartete und das beobachtete Ergebnis. Zum Beispiel: „Nach dem Neustart ist die Checkbox wieder leer, obwohl ich sie abgehakt hatte. Erklär die Ursache und repariere die Persistenz, ohne das Design zu ändern.“
Die CLAUDE.md-Vorlage und das Prüfblatt herunterladen (.md). Öffne sie in deinem Editor oder einer Notiz-App. Pass die Befehle an dein Projekt an, bevor du sie dem Agenten gibst.
Schritt 6: Prüfen lassen und testen
Claude Code schreibt Code, der richtig aussieht. Ob er es ist, sagen dir nur deine Tests und dein iPhone.
Tests, damit nichts kaputtgeht, was schon läuft
Je größer deine App wird, desto eher macht jede Anfrage einen bereits abgenommenen Screen kaputt. Das von Expo erstellte Projekt hat keine Tests: Bitte Claude zuerst, Jest mit jest-expo zu installieren, wie es die Expo-Dokumentation empfiehlt. Dann lass Tests für die wichtige Logik schreiben (Berechnung einer Serie, Validierung eines Formulars) und nach jeder Änderung ausführen. Deshalb stehen die Testbefehle in der CLAUDE.md: Claude führt sie aus, ohne dass du daran erinnern musst. Mit einer Regeldatei und Tests macht die KI viel seltener kaputt, was schon funktioniert hat.
Lies jede Änderung
Du musst nicht jede Zeile verstehen. Du musst wissen, welche Dateien sich geändert haben und warum. Wenn Claude eine Datei angefasst hat, die nichts mit der Aufgabe zu tun hat, frag nach dem Grund, bevor du zustimmst. Dann stell die Frage: „Was kann hier kaputtgehen?“
Auf einem kleinen und einem großen iPhone prüfen
Diese Lektion war für mich die teuerste. Solys wurde von Apple nach Regel 2.1 abgelehnt: Die Onboarding-Demo war auf einem iPad Air, wo die App im iPhone-Kompatibilitätsmodus lief, nicht zu gewinnen. Die Ursache: Höhen, die in festen Punkten codiert waren statt relativ zur Bildschirmgröße. Auf meinem iPhone war alles in Ordnung. Der Code war geprüft, die Tests waren grün. Kein Tool hatte sich den Bildschirm in einer anderen Größe angesehen.
Seitdem prüfe ich jeden Screen mindestens auf dem kleinsten und dem größten iPhone. Wenn du nur ein Handy hast, reicht der Xcode-Simulator auf dem Mac oder ein Freund mit einem anderen Modell. Achte besonders auf lange Texte, die offene Tastatur bei Formularen und unten fixierte Buttons.
Was Claude Code schlecht macht
Claude Code glänzt bei Screens und Logik. Außerhalb deines Ordners ist es deutlich weniger zuverlässig.
Signierung und Zertifikate
Ohne autorisierte Verbindung zu deinem Apple-Account kennt Claude dessen Zustand nicht. Es kann ein Zertifikatsverfahren erfinden, das Xcode und Expo vermischt. Überlass die Signierung EAS: Die Expo-Dokumentation erklärt, dass EAS CLI diese Dateien für dich erzeugen und speichern kann, nachdem du dich mit deinem Apple-Developer-Account verbunden hast.
App Store Connect
Der Store-Eintrag, die Datenschutzangaben, die Screenshots und die rechtlichen Links sind Daten, die du in App Store Connect prüfen musst. Claude Code kann inzwischen über seine Chrome-Integration in einem angemeldeten Browser handeln, mit den nötigen Zugriffen. Das garantiert nicht, dass die Felder stimmen: Lies die Angaben gegen, prüf die verwendeten Accounts und bestätige Verpflichtungen und das Einreichen zur Review selbst.
Abos
Eine Paywall zu schreiben dauert zehn Minuten. Die Produkte in App Store Connect, ihre Konfiguration in RevenueCat und den Code in Einklang zu bringen, ist eine andere Geschichte. Eine Kennung, die um ein Zeichen abweicht, und die Paywall bleibt beim Reviewer leer. Die häufigsten Fallen stehen in den Paywall-Fehlern von iOS-Einsteigern.
Grenzfälle
Ohne Anweisung behandelt Claude den Normalfall. Kein Netz, eine leere Liste, ein abgebrochener Kauf: Die musst du benennen.
Supabase-Sicherheit
Wenn Claude Tabellen in Supabase anlegt, prüf, ob die Row Level Security (RLS) aktiviert ist, mit Policies, die jeden Nutzer auf seine eigenen Daten beschränken. Prüf auch, dass kein Secret Key im Code der App landet. Schreib diese beiden Verbote in deine CLAUDE.md, sobald du eine Datenbank anbindest.
Schritt 7: Mit EAS auf TestFlight
Deine Screens wurden in Expo Go oder in einem Development Build geprüft, je nach verwendeten Modulen. Jetzt geht es an den Build, der an die Tester verteilt wird.
EAS vorbereiten
Jetzt brauchst du einen kostenpflichtigen Apple-Developer-Account: Expo weist darauf hin, dass er Pflicht ist, um eine App an den App Store zu schicken. Installier dann das Expo-Tool und konfiguriere das Projekt:
npm install --global eas-cli
eas login
eas build:configure
Trag in app.json unter ios.bundleIdentifier einen eindeutigen Bundle Identifier ein, zum Beispiel com.yourname.myapp.
Kompilieren und hochladen
eas build --platform ios --profile production
eas submit --platform ios
Der erste Befehl kompiliert die App auf den Servern von Expo. Beim ersten Mal bietet EAS an, sich mit deinem Apple-Account zu verbinden, um die Zertifikate zu erstellen. Der zweite schickt den Build an App Store Connect. Du kannst auch alles auf einmal erledigen, mit eas build --platform ios --auto-submit.
Der Build muss von Apple verarbeitet werden, bevor er in TestFlight erscheint, und diese Verarbeitung kann ihn ablehnen, zum Beispiel mit ITMS-90717 wegen eines transparenten Icons. Ein erfolgreicher Upload heißt also nicht, dass er schon installierbar ist: Kontrollier seinen Status in App Store Connect. Interne und externe Tester sowie die Beta-Review erkläre ich in meinem Guide TestFlight zum Testen deiner iPhone-App.
Wiederhole die Prüfungen aus Schritt 6 mit diesem Build. Eine App, die in Expo Go läuft, kann in Produktion trotzdem abstürzen, etwa wenn ein natives Modul fehlt.
Was es wirklich kostet
Hier die von den Diensten angegebenen Preise, geprüft am 27. September 2026, in Dollar. Der berechnete Betrag hängt auch von deiner Region, den Steuern und deiner Nutzung ab: Prüf das Angebot, bevor du abschließt.
- Claude-Abo: Pro kostet 20 $ pro Monat, oder 17 $ pro Monat bei jährlicher Zahlung. Die Max-Angebote beginnen bei 100 $ pro Monat, für mehr Nutzung.
- Apple-Developer-Account: 99 $ pro Jahr, Pflicht für TestFlight und den App Store.
- EAS: Das kostenlose Angebot von Expo enthält 15 iOS-Builds pro Monat in einer Warteschlange mit niedriger Priorität. Starter kostet 19 $ pro Monat, plus zusätzliche Nutzung.
Für einen kleinen Prototyp können Pro und das kostenlose EAS-Angebot eine Basis sein, wenn du in ihren Kontingenten bleibst. Rechne den Apple-Account vor TestFlight dazu und kalkuliere dann die wirklich nötigen Dienste separat: Datenbank, Speicher oder kostenpflichtige API. Die Budgetvorlage für eine erste App hilft dir, diese Posten aufzustellen. Deine Zeit für Konfiguration und Prüfung musst du ebenfalls einplanen.
Die ehrlichen Grenzen, und wo man hängen bleibt
Claude Code hat verändert, wer eine iPhone-App erstellen kann. Es hat nicht verändert, was Apple für die Veröffentlichung verlangt. Eine Ablehnung kommt schnell: Solys hat welche kassiert, Nolera und Clic auch. Die häufigsten Gründe erzähle ich in warum Apple eine App ablehnt.
Mit diesem Tutorial schaffst du es allein bis TestFlight. Hängen bleibt man meistens danach: Abos anbinden, die Unterlagen für den Reviewer vorbereiten, eine Ablehnung verstehen. Für den Überblick über den ganzen Weg lies die Seite eine iPhone-App erstellen.
Für diesen Teil vereint das iOS Kit den Startcode meiner Apps, inklusive Abos, die Claude-Code-Skills für jeden Schritt und das Apple Review Kit. Den kompletten Weg findest du auf der Seite Claude-Code-Kurs zum Erstellen einer iOS-App.
Du hängst schon fest und weißt nicht, woran? Die kostenlose Diagnose sagt dir, was dich wirklich bremst, und schickt dir meine Checkliste gegen Apple-Ablehnungen.
Häufige Fragen
Kann man ohne Programmierkenntnisse eine iPhone-App mit Claude Code erstellen?
Ja für Screens und einfache Logik, wenn du jeden Schritt liest und testest. Nein, wenn du hoffst, gar nichts verstehen zu müssen. Du musst eine Fehlermeldung lesen, einen Befehl ausführen und prüfen können, was Claude geändert hat. Das lernt man beim Bauen schnell.
Ist Claude Code kostenlos?
Nein. Claude Code verlangt einen Pro-, Max-, Team-, Enterprise- oder Console-Account. Das kostenlose Angebot von claude.ai enthält es nicht. Mit Pro kannst du anfangen, musst aber die Nutzungslimits im Auge behalten.
Braucht man einen Mac, um mit Claude Code eine iOS-App zu erstellen?
Nein. Du programmierst auf einem beliebigen Rechner, testest in Expo Go auf deinem iPhone, und EAS kompiliert und lädt die App auf den Servern von Expo hoch. Ein Mac ist für den Simulator praktisch, aber nicht nötig.
Claude Code oder Cursor für eine React-Native-App?
Ich nutze beide, jeden Tag. Claude Code arbeitet im Terminal und erledigt Änderung und Tests selbstständig nacheinander. Cursor ist ein Editor. Die Methode zählt mehr als das Tool: Regeln, ein Screen nach dem anderen, Tests.
Wie lange dauert es, eine erste App mit Claude Code zu veröffentlichen?
Das hängt von der Größe der App und deiner Zeit ab. Eine App mit einer einzigen Funktion geht viel schneller. Der unberechenbarste Teil bleibt die Apple-Review.
Kann Claude Code In-App-Abos konfigurieren?
Es kann den Code für die Paywall und für RevenueCat schreiben. Mit verbundenen Tools und den nötigen Berechtigungen kann es auch in den Konsolen eingreifen. Schließ aus dem vorhandenen Code nie, dass die Produkte konfiguriert sind: Prüf Kennungen, Preise und Berechtigungen nach dem Kauf und teste dann Kauf und Wiederherstellung auf TestFlight. Die häufigen Fehler bei iOS-Paywalls zeigen dir, was du kontrollieren musst.