2015-03-20 5 views
2

Мое приложение использует MPMusicPlayerController.systemMusicPlayer() для воспроизведения звука, который хорошо работает.Невозможно изменить MPRemoteCommandCenter Действия при использовании MPMusicPlayerController

Пользователь может установить пользовательский currentPlaybackRate. Это работает так, как ожидалось.

Если пользователь нажимает на экран блокировки (MPRemoteCommandCenter), currentPlaybackRate сбрасывается на 1. Это происходит потому, что события отправляются непосредственно на системный музыкальный проигрыватель, а не на контроллер приложения.

Чтобы установить currentPlaybackRate на правильное значение, я попытался отменить MPRemoteCommandCenter события:

override func viewDidLoad() { 
    super.viewDidLoad() 

    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "willEnterForeground:", name: UIApplicationWillEnterForegroundNotification, object: nil) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "playbackStateChanged:", name: MPMusicPlayerControllerPlaybackStateDidChangeNotification, object: player) 
    player.beginGeneratingPlaybackNotifications() 

    let rcc : MPRemoteCommandCenter = MPRemoteCommandCenter.sharedCommandCenter() 
    rcc.playCommand.addTargetWithHandler { (event: MPRemoteCommandEvent!) -> MPRemoteCommandHandlerStatus in 
     NSLog("Lock Screen Play Pressed") 
     return MPRemoteCommandHandlerStatus.Success 
    } 
    rcc.togglePlayPauseCommand.addTargetWithHandler { (event: MPRemoteCommandEvent!) -> MPRemoteCommandHandlerStatus in 
     NSLog("Lock Screen Play/Pause Pressed") 
     return MPRemoteCommandHandlerStatus.Success 
    } 
} 

предполагается ли MPRemoteCommandCenter соблюдать addTargetWithHandler при использовании MPMusicPlayerController?

+0

Вы решаете эту проблему? – AlKozin

+0

У меня есть еще одна ветка, где я полностью заменил 'MPMusicPlayerController' на' AVAudioPlayer'. Это работает, но это означает, что вашему контроллеру необходимо обрабатывать гораздо больше логики. –

ответ

0

Попробуйте использовать это решение, если вы на самом деле не нужно MPMusicPlayerController https://github.com/gangverk/GVMusicPlayerController Этот парень сочетать поведение AVAudioPlayer и MPMusicPlayerController.

Но мне нужна сталь для ответа. Потому что в моем приложении мне действительно нужен MPMusicPlayerController.