Its been a long while since I’ve done any MacOS based development and I wanted to checkout the new support for Swift and the new SwiftUI framework. I decided the best way to learn something, is to jump right in and try to make something useful. After spending a fair amount of time trying to find a nice FREE radio player for MacOS, I noticed that the entire market is saturated with super heavy, feature rich media players that seem to play radio and organize your life. I like simple things. Things that server one purpose and serve it well.
Two days later and about 20 coffees later, µRadio was born!
- Written entirely in Swift
- Uses, almost completely, SwiftUI (AppKit is used a bit for MacOS specifics)
- Can easily be ported to iPhone, iPad etc
- Ability to add favourites
- Ability to delete favourites
- Ability to change a favourite stations thumbnail (some of the api based ones are naaaasty)
- Ability to search the radio-browser.info API
- Ability to change the radio-browser.info API endpoints (for different regions)
- Ability to filter search results by country
- Nice play, pause and bufferring indictions
- Small, simple and clean UI which works in dark and light Mac OS modes
- Ability to change volume independently of system volume
- Nice thumbnails
What I’ve Learnt
- SwitUI is not ready for production. You will frequently have to use “hacks” for basic functionality.
- There is a SwiftUI big on Big Sur where minified windows canno’t be restored. To get around this, I had to subscribe to the
NSWindow.didMiniaturizeNotificationevent and actually close the window. When the user clicks the dock icon, the window will then be restored. This is reproducable even with empty SwiftUI MacOS projects.
- SwiftUI ignores
idealWidthwhen the window is re-used (minified/closed state to visible).
- Integration with “Control Center”
You can download it for FREE. It does NOT contain ads and never will. The project may go open source soon too, once I’ve tidied up my nasty rushed code.