# VMC iOS (SwiftUI + VLCKit 4) Native iPhone/iPad app voor Vonas Media Cluster. ## Op de Mac ```bash cd ~/Code/mediacluster/apps/ios open VMC.xcodeproj ``` Eerste keer (of na schone sync) **VLCKit 4** zetten (PiP): ```bash bash scripts/fetch-vlckit.sh # download ~500MB VLCKit 4.0.0a19 bash scripts/link-vlckit.sh # → Vendor/VLCKit.xcframework ``` > **Let op:** MobileVLCKit 3.x heeft **geen** Apple Picture in Picture. VMC iOS 0.5.3+ vereist VLCKit 4. In Xcode: 1. **Signing & Capabilities** → Team + Background Modes → *Audio, AirPlay, and Picture in Picture* 2. iPhone selecteren → ▶ Run ## Picture in Picture - Systeem-PiP via VLCKit (`VLCPictureInPictureDrawable`) - PiP-knop in de speler + automatisch bij app naar achtergrond tijdens afspelen - Encrypted DASH via lokale stream-proxy → VLC --- ## Apple TV (tvOS) Apart project (zelfde API, TV-UI met focus/remote): ```bash cd ~/Code/mediacluster/apps/ios bash scripts/fetch-tvvlckit.sh bash scripts/link-tvvlckit.sh open VMCTV.xcodeproj ``` - Bundle ID: `nl.vonas.mediacluster.tvos` - Team: `X25NYX3K49` - Playback: **TVVLCKit** (VLC 3.x engine) — PiP is iPhone/iPad-only - Details: `VMCTV/README.md` ## Let op `Vendor/VLCKit.xcframework` en `Vendor/TVVLCKit.xcframework` staan niet in git (te groot). Altijd op de Mac via de scripts installeren. ## Live TV / Events / ClearKey (0.5.2+) - `streamId` is een **String** (`"123"` of `"custom:uuid"`); path-segmenten worden URL-geëncodeerd (inclusief `:`). - Play-response parseert `format`, `drm` (ClearKey kids/keys) en `watchSessionId` voor live-lijsten én events. - Heartbeat: `POST /api/v1/client/watching/heartbeat` ~elke 25s bij custom live + events. - **ClearKey/DASH:** lokale in-app proxy (`ClearKeyDashProxy`) haalt MPD/segmenten op (dynamic live: BaseURL/Location/query/Range), decrypt CENC/CBCS (`sinf`→`free`), en speelt plain DASH via VLCKit. Xtream HLS/TS speelt direct zonder proxy. - Events-tab verschijnt als `/me` → `events.enabled` true is.