Deep Radio – Native Radio-App für iOS, macOS und Android - Media, Entertainment & Audio Streaming case study door Score Agency
Media, Entertainment & Audio Streaming

Deep Radio – Native Radio-App für iOS, macOS und Android

Deep Radio

Projektdauer

1 maand

Team

4 specialisten

Branche

Media, Entertainment & Audio Streaming

Kontext

Deep Radio ist seit fast 20 Jahren ein bekannter Name in der niederländischen Dance-Szene. Der Online-Radiosender läuft 24 Stunden am Tag und steht für Energie, Beats, Shows, Classics, neue Releases und eine Community, die Musik nicht nur hört, sondern lebt. Score Agency entwickelte für Deep Radio eine native Radio-App, die weit mehr ist als ein einfacher Play-Button. Die App bringt das vollständige Deep Radio Erlebnis auf iOS, macOS und Android: Live-Streaming in hoher Qualität, direkte Now-Playing Informationen, zuletzt gespielte Tracks, ein vollständiger Wochenplan und nahtlose Wiedergabe über AirPlay oder Chromecast. Die Stärke der App liegt in der Kombination aus tiefer technischer Integration und starker Markenexperience. Dynamic Island und Live Activities zeigen in Echtzeit, was gerade läuft. Lockscreen und Control Center machen Deep Radio zu einem natürlichen Teil des Betriebssystems. Die Hintergrundwiedergabe bleibt stabil, Netzwerkunterbrechungen werden intelligent abgefangen und die App arbeitet sauber mit Telefonaten und anderen Audio-Apps zusammen. Auch visuell erhielt die App einen eigenen Charakter. Realtime Metadaten, Coverart, ein synthetisierter VU-Meter und sogar ein DJ Scratch-Effekt machen die App zu einer echten digitalen Erweiterung der Marke Deep Radio statt zu einem generischen Radioplayer. Score Agency entwickelte keine kompromissbehaftete Cross-Platform App, sondern eine ausgereifte native Produktlinie: iOS und macOS mit SwiftUI und xcodegen, Android mit Kotlin, Jetpack Compose und Material3. Das Ergebnis ist schnell, zuverlässig und plattformspezifisch, während die Deep Radio Identität überall konsistent bleibt. Deep Radio. We Are Dance.

Die Herausforderung

Deep Radio benötigte eine App, die die Energie des Senders in ein hochwertiges, stabiles und natives Hörerlebnis für iOS, macOS und Android übersetzt.

Spezifische Herausforderungen

  • 1
    Die App sollte sich wie ein echtes Markenerlebnis anfühlen und nicht wie ein generischer Radioplayer
  • 2
    Live-Audio musste auch im Hintergrund zuverlässig weiterlaufen
  • 3
    iOS, macOS und Android sollten dieselbe Qualität und visuelle Konsistenz bieten, ohne native Plattformvorteile zu verlieren
  • 4
    Now-Playing Informationen, Coverart, Showdaten und zuletzt gespielte Tracks mussten in Echtzeit verfügbar sein
  • 5
    Dynamic Island, Live Activities, Lockscreen Controls und Control Center mussten nativ unterstützt werden
  • 6
    Chromecast, AirPlay und lokale Wiedergabe mussten ohne doppelte Audioausgabe oder verwirrende Zustände zusammenspielen
  • 7
    Die App musste korrekt mit Telefonaten, Systemunterbrechungen, anderen Audio-Apps und Netzwerkproblemen umgehen
  • 8
    Die Android-Version musste iOS visuell und funktional entsprechen und eine moderne Material3 UI bieten
  • 9
    Analytics sollten Playback, Trackwechsel, Casting und Interaktionen messbar machen
  • 10
    Die technische Basis musste skalierbar für zukünftige Shows, Features und Integrationen sein
Unser Ansatz

Score Agency entwickelte eine native Produktlinie mit Fokus auf Performance, Plattformintegration und Markenerlebnis. Für Apple-Plattformen nutzten wir SwiftUI, ActivityKit, AVAudioSession, MPNowPlayingInfoCenter, Google Cast und moderne Observation APIs. Für Android entstand dieselbe Experience nativ mit Kotlin, Jetpack Compose, Material3, Media3 und ExoPlayer.

Native Produktlinie

Kein generischer Wrapper, sondern eine gezielt entwickelte Produktlinie für iOS, macOS und Android. Apple-Plattformen wurden mit xcodegen und project.yml strukturiert, Android nativ mit Kotlin, Jetpack Compose und Material3.

Premium Live-Audio

Die App unterstützt Background Audio Mode, eigene AVAudioSession-Konfiguration und stabile Live-Wiedergabe, damit Deep Radio auch beim Multitasking oder gesperrtem Gerät weiterspielt.

Dynamic Island & Live Activities

Für iOS 16.1+ entwickelten wir eine eigene ActivityKit Widget Extension. Compact, expanded und minimal states zeigen Deep Radio Logo, Waveform-Icon, LIVE-Badge, Artist und Titel.

Gemeinsamer Now-Playing State

App und Widget teilen den Live-Status über DeepFMNowPlayingAttributes, wodurch Dynamic Island, Live Activities und App-Interface synchron mit dem Sender bleiben.

Chromecast Integration

Mit Google Cast SDK 4.8.4, Bonjour Discovery über NSBonjourServices und custom GCKMediaMetadata können Hörer den Livestream inklusive Titel, Artist und 512x512 Artwork casten.

Intelligentes Cast Session Management

Wenn Casting startet, pausiert die lokale Wiedergabe automatisch. Nach dem Disconnect setzt die App die lokale Wiedergabe über GCKSessionManager intelligent fort.

Nativer SwiftUI Cast Button

Casting ist über einen erkennbaren SwiftUI Button mit SF Symbol tv Icon verfügbar, verbunden mit presentCastDialog() für einen vertrauten nativen Flow.

Lockscreen & Control Center

MPNowPlayingInfoCenter und MPRemoteCommandCenter liefern native Mediensteuerung, Live-Stream Status, Shownamen, elapsed playback time und dynamisch gerendertes Artwork.

Reconnect ohne Frustration

Eine 8-Sekunden Grace Period und ein 15-Sekunden Cooldown verhindern Playback-Flapping bei kurzen Netzwerkunterbrechungen und sorgen für ein ruhigeres Erlebnis.

Realtime Audio Visualisierung

Der VU-Meter ist als synthetisierte 24 fps Animation mit sinusförmiger Drift und Jitter aufgebaut und funktioniert dadurch auch mit Live HLS und MP3 Streams ohne MTAudioProcessingTap.

DJ Scratch-Effekt

Der Scratch-Effekt nutzt ein duales AVAudioEngine Setup: AVPlayer für den Hauptstream und eine separate Engine mit AVAudioUnitTimePitch.

Moderne iOS-Architektur

Die App nutzt @Observable und @State auf iOS 17+ für modernes State Management ohne Combine-Boilerplate. Now-playing und History werden per async/await Polling geladen.

Platform Conditional Compilation

#if os(iOS) trennt Cast, ActivityKit und Firebase sauber von der macOS-Build, wodurch jede Target fokussiert und wartbar bleibt.

Realtime Datenintegrationen

Die App nutzt die Backstage API für Live-Trackmetadaten und verarbeitet den deep.radio Sendeplan über Regex Parsing für Shownamen, Zeiten und Artwork.

Type-safe Analytics

Firebase Analytics wurde mit type-safe Events für Trackwechsel, Playback, Casting und Scratch-Interaktionen umgesetzt.

Android Parity

Die Android-App nutzt Media3 1.5.0, ExoPlayer, adaptive bitrate streaming, ICY Metadata Extraction, MediaSession, MediaSessionService und Coil für Artwork Caching.

Ergebnis
3
Plattformen
iOS, macOS und natives Android
3 states
Dynamic Island
Compact, expanded und minimal
AirPlay + Cast
Casting
Natives Streaming zu Speaker, TV und Auto
24/7
Live-Audio
Zuverlässige Hintergrundwiedergabe
24 fps
Realtime UI
Synthetisierte VU-Meter Animation
Type-safe
Analytics
Playback, Casting und Interaktionen messbar

Technik & Ansatz

SwiftUI xcodegen project.yml ActivityKit Live Activities Dynamic Island Widget Extension AVAudioSession AVAudioEngine AVPlayer Google Cast SDK

Ähnliche Cases

Ähnliche Herausforderung?

Wir besprechen gerne, wie wir Ihr Projekt zum Erfolg machen können.