I am new to Swift Programing Languge and I'm trying to get a output when the song changes. Code has no any error.
Below is my code
import UIKit
import MediaPlayer
class ViewController: UIViewController {
var trackChangedObserver : AnyObject?
override func viewDidLoad() {
super.viewDidLoad()
trackChangedObserver = NotificationCenter.default
.addObserver(forName: .MPMusicPlayerControllerNowPlayingItemDidChange,
object: nil, queue: OperationQueue.main) { (notification) -> Void in
self.updateTrackInformation()
}
}
deinit {
NotificationCenter.default.removeObserver(trackChangedObserver!)
}
func updateTrackInformation() {
let musicPlayer = MPMusicPlayerController.systemMusicPlayer
musicPlayer.beginGeneratingPlaybackNotifications()
let currentTrack: MPMediaItem? = musicPlayer.nowPlayingItem
let title = currentTrack?.value(forProperty: MPMediaItemPropertyTitle)
as? String ?? "None"
print(title)
let artist = currentTrack?.value(forProperty: MPMediaItemPropertyArtist)
as? String ?? "None"
print(artist)
let album = currentTrack?.value(forProperty: MPMediaItemPropertyAlbumTitle)
as? String ?? "None"
print(album)
}
}
you can do like this:
nc.post(name: .MPMusicPlayerControllerNowPlayingItemDidChange, object: nil)
To register to catch a notification being posted, use this: