tool/screenshots_ios.sh runs the existing demo-login integration test on iPhone 6.5" (iPhone 14 Plus) and iPad 13" simulators, stores the canonical PNGs under materials/screenshots and mirrors alpha-free JPEGs to ios/fastlane/screenshots for `fastlane upload_screenshots`. Fixed the demo router answering timetable/custom-events with a week, which crashed the inline iOS widget refresh after a demo login. The screenshot test now skips the one-time Talk notification dialog and waits longer for the app shell on cold simulators. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Fastlane – App-Store-Screenshots & Upload
iOS-Gegenstück zu android/fastlane. Die App muss dafür nicht neu gebaut
werden – der Demo-Modus (demo@-Login) liefert die kompletten Inhalte aus
Fixtures.
1. Screenshots aufnehmen
Aus dem Client-Wurzelverzeichnis:
tool/screenshots_ios.sh
Fährt „iPhone 14 Plus“ (6,5″, 1284×2778) und „iPad Pro 13-inch (M5)“
(13″, 2064×2752) nacheinander durch und legt die PNGs in
materials/screenshots/{ios/6-5-inch,ipados/13-inch}/ sowie als JPEG-Upload-Kopie
(App Store Connect lehnt Alpha-Kanäle ab) in screenshots/de-DE/ ab. Fehlende
Simulatoren legt das Skript selbst an.
- Nur eine Größe:
PROFILES="iphone" tool/screenshots_ios.sh - Andere Simulatoren:
IPHONE_SIM="iPhone 11 Pro Max" IPAD_SIM="…" tool/screenshots_ios.sh
App und Schlüsselbund der verwendeten Simulatoren werden dabei zurückgesetzt.
2. Hochladen
fastlane installieren (brew install fastlane), in App Store Connect unter
Benutzer und Zugriff → Integrationen → App Store Connect API einen Key mit
Rolle App-Manager anlegen und als JSON ablegen:
{
"key_id": "ABC123XYZ",
"issuer_id": "00000000-0000-0000-0000-000000000000",
"key": "-----BEGIN PRIVATE KEY-----\n…\n-----END PRIVATE KEY-----",
"in_house": false
}
export APP_STORE_CONNECT_API_KEY=/pfad/zu/app-store-connect-api-key.json
cd ios
fastlane upload_screenshots
Die Screenshots landen in der aktuell bearbeitbaren App-Store-Version
(„Vorbereitung für Einreichung“); vorhandene Screenshots werden ersetzt. Der
API-Key wird nicht eingecheckt (siehe .gitignore).