Get current playing song from Spotify iOS app
Asked Answered
A

4

35

I'm trying to get info about the current playing song in Spotify iOS app. The scenario is as follows: Open Spotify iOS app, start playing a song. Put the app in background and open my iOS app. Is there any way I could get the song playing on Spotify, in my iOS app?

I have tried using the nowPlayingItem property as described in this post, but it didn't work: On iPhone: Find out what song is currently playing? (in the iPod music player)

I have tried using the [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo as described in this post, but it didn't work: Is there a way to access the currently played track while the iPhone is connected to an accessory?

I have seen the same question asked in this post on apple developer forums: https://devforums.apple.com/message/903640#903640.

Has anyone encountered this problem? Have you found a viable solution?

Thanks,

Apanage answered 11/12, 2013 at 6:36 Comment(3)
possible duplicate of Determine song being played on iPhone by third-party appSantoro
I don't believe this is a duplicate because that question is asking for a generic solution, so any answers to that question can not take into account any possibly Spotify-specific APIs.Dynamism
This may help you: Get meta data displayed in MPNowPlayingInfoCenter's nowPlayingInfoTickler
T
9

Here is a solution in Swift 3:

let player = MPMusicPlayerController.systemMusicPlayer()
if let mediaItem = player.nowPlayingItem {
    let title: String = mediaItem.value(forProperty: MPMediaItemPropertyTitle) as! String
    let albumTitle: String = mediaItem.value(forProperty: MPMediaItemPropertyAlbumTitle) as! String
    let artist: String = mediaItem.value(forProperty: MPMediaItemPropertyArtist) as! String

    print("\(title) on \(albumTitle) by \(artist)")
}

Note that starting from iOS 10, you must set a description string for NSAppleMusicUsageDescription in the Info.plist in order to get access to the user's music.

mediaItem will be an instance of MPMediaItem if there is something playing. You can access the media item's attributes using the value(forProperty:) method. This methods takes a property. The properties are defined in the documentation for `MPMediaItem under the heading "General Media Item Property Keys".

Tickler answered 18/11, 2015 at 17:34 Comment(2)
This only works with the iOS player. With third-party apps like Spotify, mediaItem is nil.Dives
I'm looking for this too, is there anyway to access 3rd party apps' now playing info?Molten
H
2

With the latest version of the Spotify iOS SDK (introduced around Sep 2018) you can now subscribe for player events and detect when a new track starts playing.

For more info check their the quick-start tutorial.

Hypocrisy answered 27/9, 2019 at 17:51 Comment(0)
A
0

If I'm not wrong, Apple doesn't allow program's to share data (for security reasons). So maybe that's the problem.

Aborn answered 19/9, 2015 at 13:7 Comment(1)
You should provide where did you grab that info.Bewitch
J
-2

First you need to connect spotify app to your app then you can get from SPTAppRemotePlayerState?.track.uri from this you get uri

Jewelljewelle answered 20/4, 2021 at 8:52 Comment(1)
Try and provide more detail in your answers, perhaps a better exampleCopp

© 2022 - 2024 — McMap. All rights reserved.