rn-music-player
v0.1.16
Published
Music player for playing music from iOS's and Android's Music Library
Downloads
93
Maintainers
Readme
rn-music-player
Music player for playing music from iOS's & Android Music Library and Premium Apple Music. More features are yet to come.
Installation
npm install rn-music-player
iOS
npm install react-native-swift
react-native swiftify
Add to your info.plist
<key>NSAppleMusicUsageDescription</key>
<string>{/*description*/}</string>
Set Swift version to 4.2 or higher.
Min supported iOS version 10.3
Android
Add to your AndroidManifest
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Supported Features
An Example project was developed to exercise and test all functionality within this library. If you are curious about how to use something, or need to compare your application setup to something that works, check there first.
Features
The following table shows the platform support for various functionality within this library.
| Feature | iOS | Android |
| :----------------------------- | :-: | :-----: |
| currentSongTitle
| ✅ | ✅ |
| getCurrentPlaybackRate
| ✅ | ✅ |
| getPlaybackDuration
| ✅ | ✅ |
| getPlaybackTime
| ✅ | ✅ |
| getPlayerState
| ✅ | ❌ |
| getRepeatMode
| ✅ | ✅ |
| getShuffleMode
| ✅ | ❌ |
| isPlaying
| ✅ | ✅ |
| isPreparedToPlay
| ✅ | ❌ |
| next
| ✅ | ✅ |
| play
| ✅ | ✅ |
| playAppleMusicSongById
| ✅ | ❌ |
| playLocalSongById
| ✅ | ❌ |
| setAppleMusicQueue
| ✅ | ❌ |
| setLocalMusicQueue
| ✅ | ❌ |
| pause
| ✅ | ✅ |
| prepareToPlay
| ✅ | ❌ |
| previous
| ✅ | ✅ |
| setPlaybackTime
| ✅ | ✅ |
| setRepeatMode
| ✅ | ✅ |
| setShuffleMode
| ✅ | ❌ |
| skipToBeginning
| ✅ | ✅ |
| stop
| ✅ | ✅ |
| checkIfPremiumApple
| ✅ | ❌ |
| getStoreFrontCountryCode
| ✅ | ❌ |
| requestUserToken
| ✅ | ❌ |
| requestAuthorization
| ✅ | ❌ |
| getAuthorizationStatus
| ✅ | ❌ |
| getUserPlaylists
| ✅ | ❌ |
| getUserSongs
| ✅ | ✅ |
| getVolume
| ✅ | ✅ |
| setVolume
| ✅ | ✅ |
| initializeMusicPlayerAndroid
| ❌ | ✅ |
Event listeners
You can listen to MusicPlayerEvents events (Currently iOS only).
| MusicPlayerEvents |
| --------------------------- |
| onPlay
|
| onPause
|
| onNext
|
| onStop
|
| onPrevious
|
| onSongChange
|
| systemVolumeDidChange
|
Apple Music API Requests
The module also exports AppleMusicRequests, which contains predefined requests to fetch data from Apple Music API. AppleMusicRequests functions return plain JavaScript objects which can be than used to make http requests with any library of your choice.
| AppleMusicRequests |
| ---------------------------------------- |
| fetchGenresRequest
|
| fetchSongByIdRequest
|
| fetchAlbumByIdRequest
|
| fetchArtistByIdRequest
|
| fetchAlbumsAndSongsTopChartRequest
|
| searchRequest
|
| getUserPlaylistsRequest
|
| getPlaylistInfoRequest
|
| getMultiplePlaylistInfoRequest
|
Good To Know
In order to make Apple Music Requests you need to have a Developer Token. Read more about it here After that you can use this script to generate the JWT token for you.
Usage
import MusicPlayer, { MusicPlayerEvents, AppleMusicRequests, IPlayerState } from 'rn-music-player';
// ...
useEffect(() => {
MusicPlayer.play();
MusicPlayerEvents.addListener('onSongChange', (playerState: IPlayerState) => {
// handle song change
});
return () => {
MusicPlayerEvents.removeAllListeners('onSongChange');
};
}, []);
Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
License
MIT