6

Ho aggiunto il lettore Spotify alla mia app che suona anche musica utilizzando MPMusicPlayerController. Quando la musica viene riprodotta da Spotify e lo schermo è bloccato, gli eventi del telecomando non vengono ricevuti per la riproduzione/pausa e FFW/RWD quando l'utente preme questi pulsanti sulla schermata di blocco.Blocco schermo I controlli iPod non funzionano con Spotify Music Player

Se la musica è in riproduzione dal MPMusicPlayerController, sono in grado di ricevere gli eventi di controllo remoto in base al seguente codice:

-(void) ViewDidLoad { 
    ... 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
    ... 
} 

e

- (BOOL) canBecomeFirstResponder 
{ 
    return YES; 
} 

- (void) remoteControlReceivedWithEvent: (UIEvent*) event 
{ 
    // see [event subtype] for details 
    if (event.type == UIEventTypeRemoteControl) { 
     // We may be receiving an event from the lockscreen 
     switch (event.subtype) { 
      case UIEventSubtypeRemoteControlTogglePlayPause: 
      case UIEventSubtypeRemoteControlPlay: 
      case UIEventSubtypeRemoteControlPause: 
       // User pressed play or pause from lockscreen 
       [self playOrPauseMusic:nil]; 
       break; 

      case UIEventSubtypeRemoteControlNextTrack: 
       // User pressed FFW from lockscreen 
       [self fastForwardMusic:nil]; 
       break; 

      case UIEventSubtypeRemoteControlPreviousTrack: 
       // User pressed rewind from lockscreen 
       [self rewindMusic:nil]; 
       break; 

      default: 
       break; 
     } 
    } 
} 

Mentre i controlli di iPod sono visibili quando il l'app entra in background, non risponde quando premo pause. Invece, i controlli dell'iPod scompaiono quando preme la pausa. Quale aggiunta è necessaria per abilitare il rilevamento di riproduzione/pausa e FFW/RWD quando lo streaming audio come Spotify viene riprodotto in background dalla schermata di blocco?

risposta

0

Dopo ulteriori indagini, ho scoperto che se includo il seguente codice quando la mia app entra in background e quando vengono ricevuti gli eventi del telecomando, i controlli di iPod non scompaiono.

// Set up info center to display album artwork within ipod controls (needed for spotify) 
MPMediaItemArtwork *ipodControlArtwork = [[MPMediaItemArtwork alloc]initWithImage:artworkImage]; 
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = [NSDictionary dictionaryWithObjectsAndKeys:nowPlayingTitle, MPMediaItemPropertyTitle, 
                 nowPlayingArtist, MPMediaItemPropertyArtist, ipodControlArtwork, MPMediaItemPropertyArtwork, [NSNumber numberWithDouble:0.0], MPNowPlayingInfoPropertyPlaybackRate, nil]; 
2

Credo di essermi imbattuto in questo in passato. Se non ricordo male ho aggiunto nel

-(void)remoteControlReceivedWithEvent:(UIEvent *) event { ... } 

così come

- (BOOL) canBecomeFirstResponder { return YES; } 

al delegato app (Questo è anche il luogo dove il mio controller audio vissuto). Stavo avendo il problema in cui gli UIViewControllers non erano vivi durante il periodo in cui volevo intercettare le notifiche UIEventTypeRemoteControl.

Provatelo e vedete se questo aiuta.

+0

Non sono sicuro che questo mi aiuterà. Se aggiungo questi metodi alla mia appDelegate, non vengono richiamati. Sospetto che non vengano chiamati perché il mio lettore audio non si trova nell'appDelegate. Ma questo mi dà spunti di riflessione. Forse ha qualcosa a che fare con il tuo suggerimento. Continuerò a provare. – JeffB6688

+0

Mi assicuro anche che il mio lettore audio possa essere referenziato tramite l'appDelegate. In questo modo, indipendentemente dal controller della vista o dalla vista in cui ci si trova, è possibile controllarlo senza problemi. Questo era l'approccio che avevo preso. In bocca al lupo. – Caleb