The iOS companion app for SignalScope — a broadcast signal intelligence platform. Monitor broadcast chain health, receive fault alerts, and playback audio clips from anywhere.
- Real-time fault monitoring — live view of active faults across all monitored broadcast chains
- Chain status — hierarchical node tree showing signal levels, RTP loss, and health per node
- Push notifications — APNs alerts for new faults with deep linking directly to the affected chain
- Live Activities — lock screen and Dynamic Island widgets showing active fault details and duration
- Audio clip playback — stream or download fault-triggered audio clips in-app
- Signal history charts — 6, 12, or 24-hour time-series for level, RTP loss, FM signal, DAB SNR, and more
- Hub overview — per-site stream cards with RDS PS/RT, DAB service names, DLS text, and AI status
- Engineer notes — attach timestamped notes to fault log entries
- Reports — paginated historical fault event log with per-site summaries
- Widgets — home screen widget (future) and Live Activity for active faults
- iOS 17.0+
- A running SignalScope hub with the mobile API enabled
- Xcode 15+
- Clone the repo and open
SignalScope.xcodeprojin Xcode - Set your development team in Signing & Capabilities
- Build and run on a device or simulator
- Open the app and go to Settings
- Enter your hub URL (e.g.
https://hub.example.com) and API token - Tap Save & Connect — the app will start polling immediately
All configuration is done in-app under the Settings tab:
| Setting | Description |
|---|---|
| Hub URL | Full URL of your SignalScope hub |
| API Token | Authentication token (stored securely in device keychain) |
| Refresh interval | How often to poll for updates (5–120 seconds) |
| File | Description |
|---|---|
AppModel.swift |
Central state — chains, faults, audio playback, polling, push notifications |
APIClient.swift |
All HTTP requests to the hub; Bearer token and X-API-Key auth |
Models.swift |
Codable data models (chains, nodes, streams, metrics, reports) |
ContentView.swift |
Tab bar root with fault banner and mini audio player overlay |
HubOverviewView.swift |
Sites tab — hub summary and per-site stream cards |
FaultsView.swift |
Faults tab — active faults with local acknowledgment |
ChainsListView.swift |
Chains tab — searchable, filterable chain list |
ChainDetailView.swift |
Chain detail — node tree, fault log, audio clips, engineer notes |
SignalHistoryView.swift |
Signal history charts using Apple Charts |
LiveActivityManager.swift |
iOS Live Activity lifecycle for active fault widgets |
NotificationManager.swift |
APNs registration, local notifications, deep link routing |
Theme.swift |
Colour palette, gradients, and shared UI components |
The app communicates with the SignalScope hub over HTTPS:
GET /api/mobile/hub/overview
GET /api/mobile/chains
GET /api/mobile/chains/{id}
GET /api/mobile/active_faults
GET /api/mobile/reports/events
GET /api/mobile/metrics/history
POST /api/mobile/device_token
POST /api/mobile/chain_notes/{fault_log_id}
- SignalScope Hub — the Python/Flask backend this app connects to