Hello,
I’m evaluating a possible MusicKit integration and would like to clarify whether the following use is permitted.
With the user’s explicit and revocable consent, our iOS app would read the song currently playing in Apple Music while our app is active and display the song title and artist to other users of our application.
Our app would not play, stream, host, download or redistribute Apple Music audio. Music playback would remain entirely within Apple Music.
When our app is closed, it would stop accessing Apple Music. The last synchronized song may remain displayed until the user opens our app again, at which point the currently playing song would be refreshed.
If a displayed song is tapped, the user would be redirected to Apple Music.
We are happy to follow Apple’s required formatting, attribution and linking rules. Album artwork is not required and can be omitted if necessary.
The Apple Music functionality itself would remain free. Any monetization would relate only to separate features of the application.
Could someone clarify:
- Is this use permitted under the MusicKit / Apple Music requirements?
- May the current song title and artist be displayed to other users in this way?
- Which official Apple framework/API is recommended for detecting the song currently playing in Apple Music while our app is active?
- Are there specific attribution or linking requirements for this use?
Thank you.
MPMusicPlayerController.systemMusicPlayer is the API, and the property is nowPlayingItem (https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontroller/nowplayingitem). Its documentation lists the state it shares with the Music app, and the now-playing item is on that list.
MusicKit is the natural place to look and it is the wrong turn. SystemMusicPlayer (https://developer.apple.com/documentation/musickit/systemmusicplayer) documents its shared state as repeat mode, shuffle mode and playback status, then says "The system music player doesn't share other aspects of the Music app's state".
Two prerequisites. NSAppleMusicUsageDescription in your Info.plist, which the MusicKit documentation (https://developer.apple.com/documentation/musickit) puts firmly: "If this key isn't present, the system terminates your app when it tries to access the user's music." Then MPMediaLibrary.requestAuthorization(_:) (https://developer.apple.com/documentation/mediaplayer/mpmedialibrary).
I tried this on iPadOS 26.7 with a catalog track never added to the library, since that is the case your design turns on. nowPlayingItem returned the title, artist, album title and artwork, and MPMusicPlayerControllerNowPlayingItemDidChangeNotification fired on each track change. That notification only posts between beginGeneratingPlaybackNotifications and endGeneratingPlaybackNotifications.
For tapping through to Apple Music, playbackStoreID on the MPMediaItem (https://developer.apple.com/documentation/mediaplayer/mpmediaitem) returned a catalog identifier, and https://music.apple.com/song/<that id> resolved to the song. On a track already in the library it returned "0" instead, so allow for a value that is not a usable identifier.
On your other three questions, I am not able to assess your app against Apple's requirements, and I would not want silence read as an answer either way. The branding and attribution rules are in the Apple Music Identity Guidelines, linked from the MusicKit page (https://developer.apple.com/musickit/), and the terms that govern use sit in your developer agreement.