How to change track position on lock screen/control center?

后端 未结 3 1184
青春惊慌失措
青春惊慌失措 2020-12-28 09:37

When playing a song with the ios 7 music app the user can use slider to change song position in the lock screen/the control center. Slider is active:

3条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-28 10:02

    I was looking for the same thing but I don't think this is possible see this post:

    How to enable audio scrubber in iOS Lock Screen control panel?

    Also popular apps like Spotify and Soundcloud don't have this implemented.

    If you are looking for a way to show the current music on the lock screen you need to do the following.

    First when you play a new track update the NowPlayingInfo :

    NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
    
        [songInfo setObject:trackTitle forKey:MPMediaItemPropertyTitle];
        [songInfo setObject:artistName forKey:MPMediaItemPropertyArtist];
        [songInfo setObject:duration forKey:MPMediaItemPropertyPlaybackDuration];
        [songInfo setObject:releaseDate forKey:MPMediaItemPropertyReleaseDate];
        [songInfo setValue:playbackRate forKey:MPNowPlayingInfoPropertyPlaybackRate];
        [songInfo setObject:elapsedTime forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
        [songInfo setObject:albumArtImage forKey:MPMediaItemPropertyArtwork];
        [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];
    

    To handle events from the Lockscreen, you first need to tell your app to start receiving events from the remote control. I do this in the application didFinishLaunchingWithOptions of my AppDelegate using the following code

     // Turn on remote control event delivery
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    

    Next you need to implement remoteControlReceivedWithEvent method to handle the captured events. In APPDelegate add the following method

    - (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
    
     if (receivedEvent.type == UIEventTypeRemoteControl) {
    
        switch (receivedEvent.subtype) {
            case UIEventSubtypeRemoteControlPause:
                //pause code here
                break;
    
            case UIEventSubtypeRemoteControlPlay:
                 //play code here
                break;
    
            case UIEventSubtypeRemoteControlPreviousTrack:
                // previous track code here
                break;
    
            case UIEventSubtypeRemoteControlNextTrack:
                //next track code here
                break;
    
            default:
                break;
        }
     }
    

    }

    More info on MPNowPlayingInfoCenter from the apple docs -> https://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPNowPlayingInfoCenter_Class

提交回复
热议问题