Music player for playing music from iOS's & Android Music Library and Premium Apple Music. More features are yet to come.
npm install rn-music-player
$ npm install react-native-swift
$ react-native swiftify
$ cd ios && pod install
$ react-native run-ios
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
$ react-native run-android
Add to your AndroidManifest
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
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.
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 |
❌ | ✅ |
You can listen to MusicPlayerEvents events (Currently iOS only).
MusicPlayerEvents |
---|
onPlay |
onPause |
onNext |
onStop |
onPrevious |
onSongChange |
systemVolumeDidChange |
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 |
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.
import MusicPlayer, { MusicPlayerEvents, AppleMusicRequests, IPlayerState } from 'rn-music-player';
// ...
useEffect(() => {
MusicPlayer.play();
MusicPlayerEvents.addListener('onSongChange', (playerState: IPlayerState) => {
// handle song change
});
return () => {
MusicPlayerEvents.removeAllListeners('onSongChange');
};
}, []);
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT