Ho un'applicazione iOS7 con lettore musicale. Sto utilizzando il seguente codice per verificare le modifiche dello stato di riproduzione da MPMusicPlayerController per aggiornare l'interfaccia utente. Più precisamente alterno l'aspetto del pulsante di riproduzione tra riproduzione e pausa.iOS7 MPMusicPlayerController afferma errato
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector (handle_NowPlayingItemChanged:)
name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object: self.musicPlayer];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector (handle_PlaybackStateChanged:)
name: MPMusicPlayerControllerPlaybackStateDidChangeNotification
object: self.musicPlayer];
[self.musicPlayer beginGeneratingPlaybackNotifications];
se faccio funzionare l'app su iOS7 su un iPad o iPhone, ottengo il seguente sequenza invece di una sola richiamata:
-[MyMediaPlayer handle_PlaybackStateChanged:] :: playbackState: 1
-[MyMediaPlayer handle_PlaybackStateChanged:] :: playbackState: 2
-[MyMediaPlayer handle_PlaybackStateChanged:] :: playbackState: 1
-[MyMediaPlayer handle_PlaybackStateChanged:] :: playbackState: 2
playbackState 2 significa MPMusicPlaybackStatePaused e causa la mia applicazione per visualizzare la stato errato nell'interfaccia utente, mentre la canzone viene effettivamente riprodotta. Non ha senso che il callback venga chiamato 4 volte, con valori alternati.
Ciò accade quando si modifica solo la coda. Sembra che il sistema non cancelli correttamente la coda.
Qualche idea su come risolvere questo?
Sì, ho inviato un bug ad Apple ma ho bisogno di una soluzione alternativa per risolvere ... – swifferina
@ user1763004 Non c'è soluzione per questo. Se a volte viene assegnato lo stato di riproduzione errato, non è possibile determinare se sia giusto o sbagliato per un dato momento. Immagino che l'unica altra opzione sia avere un pulsante play e pause, ma suppongo che non sia qualcosa che vuoi. – sooper
Ho questo problema anche su un lettore musicale.Non c'è modo di sbarazzarsi di quello finora. Questo è un problema serio su iOS7. – loretoparisi