Initial FeelAloud project
This commit is contained in:
133
docs/TESTFLIGHT.md
Normal file
133
docs/TESTFLIGHT.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user