play next song when music when music is finished in iOS swift -
i trying build music app. music playing when music finished not playing next song. searching solution. when try whit solution is's give me error.
erminating app due uncaught exception 'nsinvalidargumentexception', reason: '-[shironamhin.musicplayer playerdidfinishplaying:]: unrecognized selector sent instance 0x17003d960
i trying way
class musicplayer: nsobject { static let player = musicplayer() //this global variable var player : avplayer? var playeritem:avplayeritem? func initplayer(){ { try avaudiosession.sharedinstance().setcategory(avaudiosessioncategoryplayback) try avaudiosession.sharedinstance().overrideoutputaudioport(avaudiosessionportoverride.speaker) print("avaudiosession category playback ok") { try avaudiosession.sharedinstance().setactive(true) print("avaudiosession active") } catch let error nserror { print(error.localizeddescription) } } catch let error nserror { print(error.localizeddescription) } } func playmusic(_ musicurl: string?) { if let mm = musicurl { var url: url! url = url(string: mm) playeritem = avplayeritem(url: url) player = avplayer(playeritem: playeritem) player?.volume = 1.0 player?.rate = 1.0 player?.play() notificationcenter.default.addobserver(self, selector: selector(("playerdidfinishplaying:")), name: nsnotification.name.avplayeritemdidplaytoendtime, object: playeritem) } func playerdidfinishplaying(note: nsnotification) { print("call") } } } also how can implement playerdidfinishplaying??
since swift 3, must declare selectors this: #selector(playerdidfinishplaying(email:)) , since swift 4 must add @objc attribute function:
@objc func audiodidfinishplaying(note: nsnotification) { print("call") } by way, avaudioplayerdelegate has nice function: optional func audioplayerdidfinishplaying(_ player: avaudioplayer, flag: bool), may easier use it. :)
Comments
Post a Comment