134 lines
5.1 KiB
Markdown
134 lines
5.1 KiB
Markdown
# TestFlight- und Release-Ablauf
|
||
|
||
## Voraussetzungen
|
||
|
||
- Mac mit Xcode 26 oder neuer
|
||
- Apple Developer Program-Mitgliedschaft
|
||
- Berechtigung als Account Holder, Admin oder App Manager in App Store Connect
|
||
- Apple-Intelligence-kompatibles Test-iPhone mit iOS 26 oder neuer
|
||
- öffentlich erreichbare Support- und Datenschutz-URLs für eine spätere
|
||
App-Store-Veröffentlichung
|
||
|
||
## 1. Bundle-ID und Signing vorbereiten
|
||
|
||
1. `FeelAloud.xcodeproj` öffnen.
|
||
2. Target **FeelAloud** auswählen.
|
||
3. Unter **Signing & Capabilities** das richtige Team wählen.
|
||
4. Die voreingestellte Bundle-ID lautet `de.feelaloud`.
|
||
5. Falls sie im gewählten Team nicht verfügbar ist, eine dauerhaft eindeutige
|
||
Bundle-ID festlegen. Nach dem ersten Upload sollte sie nicht mehr geändert
|
||
werden.
|
||
6. **Automatically manage signing** aktiviert lassen, sofern kein eigener
|
||
manueller Signing-Prozess verwendet wird.
|
||
|
||
Zertifikate, `.p12`-Dateien, Provisioning Profiles und private Schlüssel gehören
|
||
nicht ins Git-Repository.
|
||
|
||
## 2. App in App Store Connect anlegen
|
||
|
||
1. In App Store Connect **Apps → + → New App** wählen.
|
||
2. Plattform **iOS** auswählen.
|
||
3. Primärsprache festlegen.
|
||
4. Als Arbeitsname **FeelAloud** verwenden.
|
||
5. Die zuvor registrierte Bundle-ID auswählen.
|
||
6. Eine interne SKU vergeben, beispielsweise `feelaloud-ios-001`.
|
||
|
||
Mögliche Metadaten für die spätere Produktseite:
|
||
|
||
| Feld | Entwurf |
|
||
| --- | --- |
|
||
| Name | `FeelAloud – Mood & Voice Diary` |
|
||
| Untertitel | `Private check-ins and insights` |
|
||
| Kategorie | Health & Fitness |
|
||
| Altersfreigabe | Im App-Store-Fragebogen bestimmen |
|
||
|
||
Die Namensverfügbarkeit wird erst in App Store Connect verbindlich sichtbar.
|
||
|
||
## 3. Release-Konfiguration prüfen
|
||
|
||
Vor jedem Upload:
|
||
|
||
- `MARKETING_VERSION` kontrollieren, aktuell `1.0`;
|
||
- `CURRENT_PROJECT_VERSION` erhöhen, aktuell `1`;
|
||
- App-Icon und Display Name prüfen;
|
||
- Mikrofon- und Speech-Nutzungstexte kontrollieren;
|
||
- Privacy Manifest und App Privacy Report prüfen;
|
||
- die vollständige Checkliste in `QA-CHECKLIST.md` auf einem echten Gerät
|
||
durchführen;
|
||
- sicherstellen, dass keine Secrets oder personenbezogenen Testexporte im
|
||
Repository liegen.
|
||
|
||
Jeder Upload zu App Store Connect benötigt eine neue Build-Nummer.
|
||
|
||
## 4. Archiv erstellen und hochladen
|
||
|
||
1. In Xcode als Ziel **Any iOS Device (arm64)** oder ein angeschlossenes iPhone
|
||
auswählen.
|
||
2. **Product → Archive** wählen.
|
||
3. Im Organizer **Distribute App** öffnen.
|
||
4. **App Store Connect → Upload** auswählen.
|
||
5. Automatische Signing- und Symbol-Optionen prüfen.
|
||
6. Validierung abschließen und Build hochladen.
|
||
7. Die Verarbeitung in App Store Connect abwarten.
|
||
|
||
Alternativ kann der Upload über Xcode Cloud automatisiert werden, sobald ein
|
||
geeigneter macOS-CI-Prozess eingerichtet ist.
|
||
|
||
## 5. Interne Tests
|
||
|
||
1. In App Store Connect die App öffnen.
|
||
2. Tab **TestFlight** auswählen.
|
||
3. Testinformationen und Kontakt-E-Mail hinterlegen.
|
||
4. Eine interne Testergruppe anlegen.
|
||
5. Den verarbeiteten Build der Gruppe zuweisen.
|
||
6. Testende installieren die App über TestFlight.
|
||
|
||
Interne Tests sind der schnellste Weg für Teammitglieder. Für Personen außerhalb
|
||
des App-Store-Connect-Teams ist ein externer Test erforderlich.
|
||
|
||
## 6. Externe Tests
|
||
|
||
1. Externe Gruppe anlegen und Build hinzufügen.
|
||
2. Beta-Beschreibung, Testschwerpunkte und Kontaktinformationen ausfüllen.
|
||
3. Build zur Beta App Review einreichen.
|
||
4. Nach Freigabe per E-Mail oder öffentlichem TestFlight-Link einladen.
|
||
|
||
Empfohlener Testhinweis:
|
||
|
||
> FeelAloud benötigt ein Apple-Intelligence-kompatibles iPhone mit iOS 26.
|
||
> Bitte prüfe Spracheingabe, lokale Auswertung, tägliche Check-ins,
|
||
> Erinnerungen und Excel-Export. Die App ist kein Medizinprodukt.
|
||
|
||
## 7. Empfohlene App-Review-Notizen
|
||
|
||
- Die App besitzt kein Login und kein Backend.
|
||
- Mikrofon und Speech Recognition werden nur für einen aktiv gestarteten
|
||
Spracheintrag verwendet.
|
||
- Die Spracherkennung wird auf dem Gerät erzwungen.
|
||
- Foundation Models strukturieren Text lokal; alle Werte können vor dem
|
||
Speichern korrigiert werden.
|
||
- Erinnerungen sind lokale Notifications.
|
||
- Ein manueller Eingabepfad ist vorhanden, falls lokale Modelle nicht bereit
|
||
sind.
|
||
- Testgerät muss Apple Intelligence und die deutsche Spracherkennung
|
||
unterstützen.
|
||
|
||
## 8. Veröffentlichungsvoraussetzungen außerhalb TestFlight
|
||
|
||
Vor einem öffentlichen App-Store-Release zusätzlich erledigen:
|
||
|
||
- öffentliche Datenschutz- und Support-Seite bereitstellen;
|
||
- App-Store-Datenschutzfragebogen mit dem finalen Build abgleichen;
|
||
- Marken- und Namensprüfung abschließen;
|
||
- Screenshots für alle verlangten iPhone-Größen erstellen;
|
||
- Beschreibung, Keywords, Copyright und Review-Kontakt ergänzen;
|
||
- Datenlöschung innerhalb der App prüfen beziehungsweise implementieren;
|
||
- medizinische Aussagen und Krisenhinweise rechtlich prüfen;
|
||
- Release Candidate auf mehreren echten Geräten testen.
|
||
|
||
## Offizielle Referenzen
|
||
|
||
- [Apple: TestFlight](https://developer.apple.com/testflight/)
|
||
- [Apple: Foundation Models](https://developer.apple.com/documentation/foundationmodels)
|
||
- [Apple: Required Reason APIs](https://developer.apple.com/documentation/bundleresources/describing-use-of-required-reason-api)
|