Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

react-native-audio-streaming-enhanced

geroale39MIT1.0.3

React native audio streaming library for android and iOS

react-native, audio streaming, ios, android, web radio, player

readme

react-native-audio-streaming

Features

  • Background audio streaming of remote stream
  • Control via sticky notification on android and media center on iOS
  • Shoutcast/Icy meta data support
  • Simple UI player component (if needed, an api to control the sound is available)

If you are only looking to play local audio file with app in foreground, please see other audio libs.

Demo iOS Demo android

First installation step (applied for both iOS & Android)

$ npm install react-native-audio-streaming --save

Next installation steps for iOS (choose one of three options below)

1. Cocoapods installation

  1. add pod 'RNAudioStreaming', :path => '../node_modules/react-native-audio-streaming' to Podfile
  2. run pod install

2. Mostly automatic installation

$ react-native link react-native-audio-streaming

Go to node_modulesreact-native-audio-streaming => ios => Pods and drag/drop Pods.xcodeproj to the Libraries folder in your XCode project.

In XCode, in the project navigator, select your project. Add libReactNativeAudioStreaming.a and libStreamingKit.a to your project's Build PhasesLink Binary With Libraries

3. Manual installation

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-audio-streaming => ios
    • run pod install to download StreamingKit dependency
    • add ReactNativeAudioStreaming.xcodeproj to the Libraries folder in your XCode project
    • add Pods/Pods.xcodeproj to the Libraries folder in your XCode project
  3. In XCode, in the project navigator, select your project. Add libReactNativeAudioStreaming.a and libStreamingKit.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)

Final steps for iOS (required after doing any of three options above)

  1. Make sure $(SRCROOT)/../node_modules/react-native-audio-streaming/ios is added to your project's Header Search Paths within the Build Settings section.

  2. Update Info.plist file of your Xcode project and add audio background mode

    <key>UIBackgroundModes</key>
    <array>
      <string>audio</string>
    </array>

Next installation steps for Android

  1. Open up android/app/src/main/java/[...]/MainApplication.java
    • Add import com.audioStreaming.ReactNativeAudioStreamingPackage; to the imports at the top of the file
    • Add new ReactNativeAudioStreamingPackage() to the list returned by the getPackages() method If you're using Android 23 or above
    • Add new ReactNativeAudioStreamingPackage(MainActivity.class) to he list returned by the getPackages()method instead.
  2. Append the following lines to android/settings.gradle:
       include ':react-native-audio-streaming'
       project(':react-native-audio-streaming').projectDir = new File(rootProject.projectDir,     '../node_modules/react-native-audio-streaming/android')
  3. Insert the following lines inside the dependencies block in android/app/build.gradle:
       compile project(':react-native-audio-streaming')

Usage

Playing sound (similar code used by the player UI)

import { ReactNativeAudioStreaming } from 'react-native-audio-streaming';

const url = "http://lacavewebradio.chickenkiller.com:8000/stream.mp3";
ReactNativeAudioStreaming.pause();
ReactNativeAudioStreaming.resume();
ReactNativeAudioStreaming.play(url, {showIniOSMediaCenter: true, showInAndroidNotifications: true});
ReactNativeAudioStreaming.stop();

For more information see the Example app.

Player UI

import { Player } from 'react-native-audio-streaming';

class PlayerUI extends Component {
  render() {
    return (
        <Player url={"http://lacavewebradio.chickenkiller.com:8000/stream.mp3"} />
    );
  }
}

TODO

  • <input disabled="" type="checkbox"> Allow to play local files
  • <input disabled="" type="checkbox"> Allow to specify custom style for the android notification (maybe a custom view ?)
  • <input disabled="" type="checkbox"> Allow to specify custom styles for the player
  • <input disabled="" type="checkbox"> Handle artwork of artist
  • <input disabled="" type="checkbox"> Add tests

Other RN audio projects

Credits

See also the list of contributors who participated in this project.

Contribute

Since symlink support is still lacking on React Native, I use the wml cli tool created by the nice folks at wix.

wml add ~/react-native-audio-streaming ~/react-native-audio-streaming/Example/node_modules/react-native-audio-streaming

Changelog

License

This project is licensed under the MIT License - see the LICENSE file for details

changelog

Change Log

v2.3.1 (2016-12-15)

Full Changelog

Closed issues:

  • How to debug? #47
  • Error while building #46
  • Not able to install..... #43

Merged pull requests:

v2.3.0 (2016-11-18)

Full Changelog

Implemented enhancements:

  • Can we make notification on android and media center control on iOS optional ? #27

Closed issues:

  • Stop working when app in background. #39
  • hi! I used Redux, I do not know how to introduce this #38
  • Android get URL of current track like iOS #35
  • libaac does not work in android Marshmallow & above #30
  • can't get work with rn 0.31.0 #25
  • Unable to run pod install #17

v2.2.0 (2016-10-24)

Full Changelog

Closed issues:

  • Can't get to work in Android 23 #24
  • Where do I get libStreamingKit.a? #20
  • Where do I get Pods.xcodeproj? #19
  • not able to control play/pause remotely using earbuds #18
  • Not working with react-native-navigation #14
  • iOS build error: STKAudioPlayer.h not found #10

Merged pull requests:

v2.1.0 (2016-09-06)

Full Changelog

Implemented enhancements:

  • Any plans for "seek" function or a "progress" listener? #5

Closed issues:

  • Install failed #4
  • Readme #2

Merged pull requests:

v2.0.2 (2016-07-23)

Full Changelog

v2.0.1 (2016-07-23)

Full Changelog

v2.0.0 (2016-07-23)

* This Change Log was automatically generated by github_changelog_generator