Access your iTunes library (iOS only)
For RN older than 0.40.0, use the release 0.4.2+ of this library
If you have questions, ask them on Twitter @kadiks
In the command line, first you need to install react-native-itunes:
npm install react-native-itunes --save
NSAppleMusicUsageDescription
in your Info.plist with a description: $(PRODUCT_NAME) wants access to your Music library
react-native link react-native-itunes
You need rnpm
(npm install -g rnpm
)
rnpm link react-native-itunes
In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name] Go to node_modules ➜ react-native-itunes and add the .xcodeproj file
In XCode, in the project navigator, select your project. Add the lib*.a from the react-native-itunes project to your project's Build Phases ➜ Link Binary With Libraries Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic'). Look for Header Search Paths and make sure it contains both $(SRCROOT)/../react-native/React
and $(SRCROOT)/../../React
- mark both as recursive.
Run your project (Cmd+R)
Note: it works on the device (it even shows on the cloud Apple Music saved songs)
import iTunes from 'react-native-itunes';
iTunes.getTracks().then((tracks) => {
console.log(tracks);
});
Beware, check other examples for better performances
import iTunes from 'react-native-itunes';
iTunes.getPlaylists().then(playlists => {
console.log(playlists);
});
import iTunes from 'react-native-itunes';
iTunes.getTracks({
query: {
title: 'digital',
albumArtist: 'daft',
},
}).then((tracks) => {
iTunes.playTracks(tracks)
.then(res => {
console.log('is playing');
})
.catch(err => {
alert('err');
});
});
More examples
Note: it works on the device (it even shows on the cloud Apple Music saved songs)
Returns [String] of artists
Returns [TrackItem]
[DEPRECATED]
use getCurrentTrack()
instead
Returns TrackItem with additional properties: currentPlayTime and artwork
Returns [PlaylistItem]
Returns [TrackItem]
''
and will return songsaudiobooks
will return the list of audiobookspodcasts
will return the list of podcastsThe Apple documentation on the MPMediaItem used: https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMediaItem_ClassReference/
playTracks()
getCurrentTrack()
next()
previous()
Thanks to Haggai Shapira
getCurrentPlayTime()
seekTo()
Thanks to kurokky
getAlbums()
getArtists()
artwork
property in getAlbums()
to avoid performances issuesgetArtists()
to return [TrackItem] and not [String]getTracks()
to getAlbums()
& getArtists()
For some reasons some tracks are not playing while they can be searched. If you have a clue why, please share.
Some playlist tracks cannot be played. Maybe those which are not cached. Might be related to first bug, but the first bug does not through a warning Investigating to flag them as unplayable before getting an error...
Persistent IDs are uint64_t (unsigned long long)
, a basic conversion to int turn them into negative number.
Malone Hedges for the getPlaylists(). I discovered that some Apple Music songs are only available via playlists Gracias a Indesign Colombia for this PR that fixes a lot of obvious and preventable mistakes