Skip to main content
MusicVoting
  1. Technical Docs/

iOS-App

·209 words·1 min·
Developer Swift
Table of Contents

Die optionale SwiftUI-App liegt unter musicvoting/app/ (Xcode-Projekt app.xcodeproj). Sie bietet eine native Gast- und Admin-(Host-)Ansicht; den Monitor/TV ersetzt sie nicht. Die fachlichen Regeln entsprechen der

Spezifikation für Mobile Computing (Swift)
·1241 words·6 mins
Docs Swift
.

Wichtige Views
#

ViewZweck
StartViewEinstieg (beitreten / Party erstellen)
HostPinEntryViewHost-PIN-Eingabe (5 Ziffern-Boxen, Auto-Submit)
HostMenuView / SpotifyAuthViewHost-Menü und Spotify-Login
Admin_ContentViewAdmin-Dashboard (Steuerung, Queue, QR, Fortschritt)
Gast_ContentView / VotingViewGast-Ansicht und Voting
QRCodeView, InfoView, ExitViewQR-Anzeige, Infos, Verlassen

ViewModels & Infrastruktur
#

  • ViewModels: AdminDashboardViewModel, VotingViewModel, SongAddViewModel, SpotifyAuthViewModel.
  • PartySession / PartySessionStore – speichert die Sitzung (Party-ID, PINs, Rolle) in UserDefaults; Sitzungen überstehen App-Neustarts, explizites Verlassen löscht sie.
  • BackendConfiguration – Backend-Basis-URL.
  • SpotifyConstants, generateQRCode, Song – Konstanten, QR-Erzeugung, Modell.

Plattform-Besonderheiten
#

  • Lokalisierung: Strings über Localizable.strings, Sprache folgt der Systemsprache; Deutsch ist Basissprache (CFBundleDevelopmentRegion = de), Englisch sekundär (Fallback auf Deutsch). Backend-Fehlermeldungen werden verbatim angezeigt, nicht re-lokalisiert.
  • SSE: persistente Verbindung mit partyId, automatischer Reconnect; party-ended wirkt nur bei passender partyId.
  • Host-Controls senden Authorization: Bearer <hostPin>; Play/Pause/Skip sind ohne aktives Gerät (deviceActive=false) gesperrt.
  • Fortschrittsbalken aus progress-SSE-Events; Reset bei track-changed.
  • Album-Cover über einen gemeinsamen URLSession-Cache (statt AsyncImage), mit music.note-Platzhalter; QR-Code zeigt während des Ladens einen Spinner.

Tests
#

Unit-Tests liegen neben dem App-Code, u. a. AdminDashboardViewModelTests, VotingViewModelTests, SongAddViewModelTests, SpotifyAuthViewModelTests, PartySessionStoreTests, BackendConfigurationTests, GenerateQRCodeTests, SongTests (mit MockURLProtocol).