【发布时间】:2018-12-06 00:07:37
【问题描述】:
我正在开发一个应用程序来收听 MPMusicPlayerController 的歌曲变化。
为此,我添加了以下观察者:
NotificationCenter.default
.addObserver(self,
selector: #selector(systemSongDidChange(_:)),
name: .MPMusicPlayerControllerNowPlayingItemDidChange,
object: nil)
问题是,当通知被触发时,可以在(notification?.object as? MPMusicPlayerController)!.nowPlayingItem 找到的nowPlayingItem 始终是nil。
我是不是做错了什么,还是必须采取一些特殊的技巧来检索实际的nowPlayingItem?
下面是更完整的代码:
// ...
init() {
let systemPlayer = MPMusicPlayerController.systemMusicPlayer
NotificationCenter.default.addObserver(self,
selector: #selector(systemSongDidChange(_:)),
name: .MPMusicPlayerControllerNowPlayingItemDidChange,
object: systemPlayer)
player.beginGeneratingPlaybackNotifications()
}
private func systemSongDidChange(notification: Notification) {
let currentSong = (notification.object as? MPMusicPlayerController)?.nowPlayingItem
// `currentSong` is always `nil` =/
}
// ...
我使用的播放器是 Apple 的音乐播放器。我没有从云端播放歌曲。
【问题讨论】:
-
您将对象设置为nil,您需要将其设置为项目
-
你好,@Tometoyou。感谢你的回复。请给个更详细的解释好吗?谢谢:D
标签: ios swift mpmusicplayercontroller