AudioPlayer icon indicating copy to clipboard operation
AudioPlayer copied to clipboard

Why I can't seek in lock screen?

Open SerhiiMatvieiev opened this issue 7 years ago • 8 comments

I can't seek in MPNowPlayingInfoCenter, I see only progress line. Anybody know what a problem is?

SerhiiMatvieiev avatar Oct 19 '17 10:10 SerhiiMatvieiev

Use MPNowPlayingInfoCenter with your own code

rusik avatar Nov 21 '17 20:11 rusik

@Rusik could you share the param that make the seek (using the slider control, like Itunes does)?

jadsonlourenco avatar Nov 21 '17 20:11 jadsonlourenco

@jadsonlourenco use something like

let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.changePlaybackPositionCommand.isEnabled = true
commandCenter.changePlaybackPositionCommand.addTarget { event -> MPRemoteCommandHandlerStatus in
    let event = event as! MPChangePlaybackPositionCommandEvent
    self.seekTo(event.positionTime)
    return .success
}

rusik avatar Nov 23 '17 13:11 rusik

Thanks @Rusik. I don't think this should be part of the player, mostly because some people might want to handle things differently. What do you guys think?

delannoyk avatar Apr 11 '18 02:04 delannoyk

You are already using MPNowPlayingInfoCenter so maybe this could be an optional feature enabled by default. With implementation for common cases like play/pause, next/prev track and seek.

rusik avatar Apr 11 '18 10:04 rusik

The only difference is that MPNowPlayingInfoCenter is just displaying things provided by the developer, whereas MPRemoteCommandCenter also handles the actions. That’s kind of what stopped me from adding it until now.

delannoyk avatar Apr 11 '18 11:04 delannoyk

how to disable next/previous track buttons using command center with the player ?

let commandCenter = MPRemoteCommandCenter.shared()
        commandCenter.previousTrackCommand.isEnabled = false
        commandCenter.nextTrackCommand.isEnabled = false

doesn't work.

nksv avatar Apr 19 '18 06:04 nksv

This work for me

override func remoteControlReceived(with event: UIEvent?) {
        if let event = event {
            
            
            switch event.subtype {
            case .remoteControlBeginSeekingBackward:
               print("Event:0")
            case .remoteControlBeginSeekingForward:
               print("Event:1")
            case .remoteControlEndSeekingBackward:
                print("Event:2")
            case .remoteControlEndSeekingForward:
                print("Event:3")
            case .remoteControlNextTrack:
                print("Event:4")
            case .remoteControlPause,
                 .remoteControlTogglePlayPause:
               print("Event:5")
            /*case .remoteControlPlay,
                 .remoteControlTogglePlayPause
                print("Event:6")*/
                player.remoteControlReceived(with: event)
            case .remoteControlPreviousTrack:
                print("Event:7")
            case .remoteControlStop:
                print("Event:8")
            default:
                player.remoteControlReceived(with: event)
                break
            }
            
            print(event)
            print(event.type)
            
        }
    }

ZetDeveloper avatar Jan 24 '19 23:01 ZetDeveloper