从Spotify iOS应用程序获取当前播放的歌曲

35

我正在尝试获取Spotify iOS应用程序中当前播放歌曲的信息。场景如下:打开Spotify iOS应用程序,开始播放一首歌曲。将应用程序置于后台并打开我的iOS应用程序。有没有办法在我的iOS应用程序中获取在Spotify上播放的歌曲?

我已经尝试使用nowPlayingItem属性,如此帖子所述,但它没有起作用:On iPhone: Find out what song is currently playing? (in the iPod music player)

我已经尝试使用[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo属性,如此帖子所述,但它没起作用:Is there a way to access the currently played track while the iPhone is connected to an accessory?

我已经看到了相同的问题在苹果开发者论坛上提出:https://devforums.apple.com/message/903640#903640

是否有人遇到这个问题?你找到了可行的解决方案吗?

谢谢,


我不认为这是一个重复的问题,因为那个问题正在寻求一种通用解决方案,所以对那个问题的任何答案都不能考虑任何可能是 Spotify 特定的 API。 - Emil Vikström
这可能会对你有所帮助:获取在MPNowPlayingInfoCenter的nowPlayingInfo中显示的元数据 - Devin Brown
4个回答

9

这里有一个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)")
}

请注意,从iOS 10开始,您必须在Info.plist中为NSAppleMusicUsageDescription设置描述字符串,才能访问用户的音乐。

如果有正在播放的内容,mediaItem将是MPMediaItem的实例。您可以使用value(forProperty:)方法访问媒体项的属性。该方法需要一个属性。属性在“通用媒体项属性键”标题下的`MPMediaItem文档中定义。


4
这只适用于iOS播放器。 对于Spotify等第三方应用程序,“mediaItem”为“nil”。 - Rob
我也在寻找这个,有没有什么方法可以访问第三方应用程序的正在播放信息? - GarySabo

2

最新版本的Spotify iOS SDK(于2018年9月左右推出)现在可以订阅播放器事件,并检测何时开始播放新曲目。

更多信息请查看他们的快速入门教程


0
如果我没记错的话,苹果不允许程序共享数据(出于安全原因)。所以这可能是问题所在。

1
你应该提供你获取这些信息的来源。 - Buzinas

-2

首先,您需要将 Spotify 应用程序连接到您的应用程序,然后您可以从SPTAppRemotePlayerState?.track.uri获取 URI。


尝试在你的回答中提供更多细节,或许一个更好的例子。 - Lewis Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接