【问题标题】:Get current song playing in Spotify on iPhone在 iPhone 上的 Spotify 中获取当前正在播放的歌曲
【发布时间】:2017-07-25 13:52:13
【问题描述】:

访问MPMusicPlayerController.systemMusicPlayer()(下面的代码)可用于获取 Apple Music 应用程序中正在播放的曲目信息,但有没有一种方法可以访问 Spotify 应用程序中当前正在播放的歌曲的信息?

此答案I need to know how to get information about which player is currently streaming (player, spotify, napster...) 中发布的此代码使用MPNowPlayingInfoCenter,无论使用Apple Music 还是Spotify 等,都为零。

  let player = MPMusicPlayerController.systemMusicPlayer()

    @IBAction func getMusicButton(_ sender: UIButton) {




        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 swift spotify


【解决方案1】:

Apple 文档指出有两种类型的音乐播放器:

  • 应用音乐播放器在您的应用中本地播放音乐。它不知道音乐应用程序正在播放的项目,也不知道 影响音乐应用的状态。有两个应用音乐播放器: applicationMusicPlayerapplicationQueuePlayer。应用程序 队列播放器可以更好地控制队列的内容 并且是首选玩家。
  • 系统音乐播放器代表您使用内置音乐应用程序。在实例化时,它采用当前的音乐应用程序状态, 例如正在播放的项目的标识。如果用户切换 在播放音乐时离开您的应用程序,该音乐继续 玩。音乐应用程序将拥有您最近设置的音乐播放器 重复模式、随机播放模式、播放状态和正在播放的项目。

第一个仅在您的应用程序中,第二个是 Apple Music 应用程序,因为您无法在普通应用程序中访问应用程序的沙箱,这在 App Store 应用程序中是不可能的。

如果您仍然想创建您的想法,您可以在越狱设备上开发它。 This github project 有一个简单的示例,说明如何在越狱调整中获取当前正在播放的歌曲。如果你想尝试一下,this 是一个很棒的教程,虽然有点老了,但关于如何开始开发调整的准确教程。


更新

我刚刚遇到了this Spotify SDK,它可以让用户登录并播放用户的 Spotify 音乐。这样,音乐流将在您的应用程序中,您可以访问应用程序MusicPlayer 中的所有信息。不利的一面是,与仅获取有关 Spotify 播放曲目的信息相比,这将需要更多的设置工作,并且用户必须从您的应用而不是 Spotify 应用播放他的音乐。

【讨论】:

  • 我认为 sdk 是为其他东西而构建的。根据他们的描述-“该框架包含从 Spotify 流式传输音频内容所必需的功能。”
  • @Rishabh streaming spotify 音频内容意味着音乐信息将在您的应用程序 applicationMusicPlayer 中不是吗?
  • 哦,我明白了。那可能是正确的。但我在 git 上看到了同样的开放功能请求:github.com/spotify/ios-sdk/issues/418
  • 我认为这个答案是不正确的。 Bose Connect iOS 应用程序成功地做到了这一点。它可以获取AudibleSpotify 的当前正在播放的媒体详细信息和播放控件。 Bose Connect 确实要求其他应用程序已经在播放,以便您控制播放并获取媒体详细信息。我正在考虑复制 Bose Connect 的播放功能。虽然我想知道他们连接的蓝牙音频设备 QC35 是否正在接收数据并将其与应用程序共享,而不是 systemMusicPlayer。
  • @Ryderpro 我假设他们是通过蓝牙完成的,但 api 可能发生了变化。这个答案已经有一年了,如果你发现任何东西,请不要犹豫更新它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2019-05-15
  • 2013-12-29
  • 2016-02-26
  • 1970-01-01
  • 2011-04-10
相关资源
最近更新 更多