Never listen to a radio commercial again. The free Lumpen Radio app is here!
And StreamingKit reverse proxy...
- StreamingKit iOS audio provider
- Built with React Native and Webpack
- Created using RN Webpack Starter Kit
- Streams any
audio/mpeg
stream listed inConstants.h
- Includes reverse proxy to update stream without app rebuild
- Background audio playback and lock screen integration
- Gorgeous video loop with AirPlay support
- Intelligent handling of common audio interruptions
- Detailed connection status and play state messaging
- Translations for English, Spanish, Chinese, Korean and German
- Remote control via Bluetooth and compatible headset
- Supports iPad and iPhone with iOS 8+
Get the latest version from Apple. Download it from the App Store now.
- Tapping radio button starts and stops the audio
- Long-pressing the radio button restarts the audio
- If the app crashes for any reason please close and reopen it
Looking to build your own React Native project with ES6/7? Check out my React Native Starter Kit. Otherwise proceed enthusiastically.
-
Clone this project.
-
Install dependencies.
npm install pod install
-
Run
npm start
to start the Webpack watcher, Webpack Dev Server and the React Packager in a single shot.Note: The Webpack watcher builds the
index.[platform].js
file expected by React Native. -
Open
WLPN.xcworkspace
in XCode and run the project.
- Execute
npm run bundle
to generate the offline JS bundle. - For iOS, update
AppDelegate.m
to load from pre-bundled file on disk. - Test the application, create an archive and submit to the store.
Learn more about Submitting to App Store.
βββ android # Source code for Android
βββ iOS # Source code for iOS
β βββ Classes # Objective-C, Swift classes
β β βββ AppDelegate # Application initialization and React Native config
β β βββ AudioManager # Lib to access platform APIs and bridge to JS
β β βββ RootViewController # RCTRootViewController override to manage Remote Control events
β βββ Images.xcassets # Launch screens and native image assets
β βββ Resources # Other native resources
β βββ Constants.h # Native globals
β βββ Info.plist # Project configuration
β βββ main.jsbundle # React Native placeholder file
β βββ main.m # Application entry point
βββ packages/skipr # StreamingKit Reverse Proxy (AGPLv3)
βββ src # Source code
β βββ assets # Static resources
β β βββ videos # Video assets
β βββ components # React Native Components
β βββ lib # JS libraries
β βββ stores # JS persistence with Flux
β βββ actions.es6 # Flux actions
β βββ main.es6 # JS application entry point
β βββ styles.es6 # React Native Style Rules
βββ .flowconfig # Facebook flow config file
βββ .gitignore # VCS blacklist
βββ Podfile # CocoaPods dependency specs
βββ Podfile.lock # Native dependency lock file
βββ WLPN-Bridging-Header.h # Objective-C, Swift bridge support file
βββ ignored-modules.js # RegExp containing modules ignored by watcher
βββ npm-shrinkwrap.js # JS dependency lock file
βββ package.json # NPM dependency specs
βββ webpack-watch.js # Filesystem watcher for JS
βββ webpack-config.js # WebPack configuration
Diagram created using tree written by Steve Baker and contributors.
- Add Expo and TypeScript support
- Long-press opens modal with stream restart
- Long-pauses restart stream or select target
- Show playing metadata from stream headers
- Stop background animation with disconnect
- Stream stops playing after a 20s phone call
- Stream buffer timeout on connection restart
Designed and developed by VHS.
Splash screen and vectors by Jermiah Chiu.
App interface and icon by VHS.
Turntable loop video by Scott Schiller, BSD and used with permission.
Inspired by open source work by Steffen TrΓΆster.
Many thanks to Public Media Institute, Lumpen Radio and all the wonderful beta testers for helping make this happen. You are beautiful.
- Ed Marszewski
- Logan Bay
- Eric Olson
- Wayne Wright
- Elizabeth Rossman
- Joseph Alfallah
- Harrison Jones
- Nick Hausman
Source code dual-licensed under MIT (Xcode 7, Swift 2) or BSD (Xcode 11, Swift 5). StreamingKit reverse proxy available under AGPLv3 and kept in directory packages/skipr
. All other creative assets copyright their respective owners. The text of the source code license is included in the file LICENSE in the source.