2010-07-20 4 views
3

저는 사용자의 iPod 라이브러리에서 음악을 재생하는 iPhone iOS4 애플리케이션을 개발 중입니다. 나는 또한 어떤 노래가 연주되었는지 추적하고 백그라운드에서 노래를 무작위로 변경할 수 있기를 원합니다. 나는, 실행하고 배경 음악을 계속 재생하려면이 응용 프로그램을 원하는 지금iPhone 앱 MPMusicPlayer로 백그라운드 전환

[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]]; 

그래서 나는 설정 : 그래서 내가 사용하는 음악 플레이어를 설정

Required background modes: App plays audio 

나는 데 문제를 (applicationDidEnterBackground가 호출 될 때, 즉 응용 프로그램 스위치에서) 백그라운드로 이동할 때 내 응용 프로그램이 제어를 잃는 것입니다. iPodMusicPlayer를 사용하고 있기 때문에 음악은 계속 재생되지만 내 앱에는 제어 기능이 없으므로 노래를 추적하거나 변경할 수 없습니다.

이제 Apple 설명서에는이 배경 모드 태그를 사용하여 응용 프로그램을 백그라운드에서 계속 실행해야한다고 나와 있지만, 그렇지 않습니다. MPMusicPlayer를 사용하고 있기 때문입니까? 주위를 둘러 볼 방법이 있습니까? 어떤 아이디어?

추신. 리모컨을 잠그고 멀티 태스킹 iPod 컨트롤러를 내 응용 프로그램과 함께 작동 시키려고합니다. 아래 코드를 사용하지만 remoteControlReceivedWithEvent는 결코 호출되지 않습니다! 그것은 MPMusicPlayer와 함께 작동합니까? AVAudioPlayer에서만 본 적이 있습니다.

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { 
    NSLog(@"remoteControlReceivedWithEvent"); 
    switch (event.subtype) { 
     case UIEventSubtypeRemoteControlTogglePlayPause: 
      NSLog(@"Play Pause"); 
      break; 
     case UIEventSubtypeRemoteControlNextTrack: 
      NSLog(@"Next"); 
      break; 
     default: 
      break; 
    } 
} 

- (BOOL)canBecomeFirstResponder { 
    NSLog(@"canBecomeFirstResponder"); 
    return YES; 
} 

- (void) viewWillAppear:(BOOL)animated{ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
} 

답변

5

정확합니다. MPMusicPlayerController을 사용하는 동안 iPhone 앱이 백그라운드에서 실행되지 않습니다. 이렇게하면 원격 제어 이벤트를 수신하지 못하게됩니다.

iPod 라이브러리에서 오디오를 재생하고 백그라운드에서 앱을 계속 실행하려면 하위 레벨 AVPlayer 클래스를 사용해야합니다.