0

현재 내 앱에서 어떤 노래가 재생되고 있는지 보여주기 위해 MPNowPlayingInfoCenter를 사용하고 있지만 HTTP Live Streaming을 내 애플리케이션에 통합하려고합니다. 배경.iOS : 백그라운드에서 미디어 정보 업데이트

기술적으로 실제로 백그라운드에서 실행되지 않더라도 응용 프로그램이 백그라운드에있는 동안 nowPlayingInfo를 설정할 수 있습니까? 일정 시간이 지나면 함수를 호출합니까?

또는 적절한 정보를 반환 할 내 서버에서 간단한 호출을 사용하여 지금 재생중인 정보를 설정하는 방법이 있습니까? 문자열 또는 이미지를 반환하는 API 호출 사용?

Songza가 이미 해본 적이 있기 때문에 가능한 것은 알고 있지만 어쩌면 Apple에서 특정 개인 방법을 사용할 수있는 권한을 부여 받았을 수도 있습니다.

+0

'AVPlayer' 클래스를 사용하고 있고 앱의 주된 목적이 음악을 재생하는 것이라면, 배경에서 그것을 실행할 수 있고 따라서 트랙이 변경 될 때'nowPlayingInfo'를 업데이트 할 수 있습니다. info.plist에 'App plays audio'를 'Background Modes'에 추가하고 적절한 오디오 세션을 만들어야합니다. – sooper

+0

@sooper 그래서 5 분 후에 호출 할 메서드를 설정하면 응용 프로그램이 백그라운드에 있어도 여전히 실행됩니다. 응용 프로그램이 포 그라운드로 돌아올 때까지 프로세스가 멈추고 호출되지 않는다는 것을 알았습니다. 오디오에 '배경 모드'설정을 사용할 때와 다른 점이 있습니까? 나는'AVPlayer'와 완전히 별개의 함수를 호출하려고합니다. – RileyE

+0

'AVPlayer'가 음악을 재생하는 동안 다른 것들 (타이머, 지금 정보 재생 등 업데이트)을 실행할 수 있습니다. – sooper

답변

1

AVPlayer 클래스를 사용하고 있고 앱의 주된 목적은 음악을 재생하는 것이므로 백그라운드에서 실행하여 트랙이 변경되면 nowPlayingInfo을 업데이트 할 수 있습니다.

그냥 빨리 예 : 당신의 dealloc 방법 원격 제어 이벤트 등록 취소

- (void)viewDidLoad { 
    [super viewDidLoad] 

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){ 
     [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
     [self becomeFirstResponder]; 
     //These two steps are important if you want the user to be able to change tracks with remote controls (you'll have to handle the remote control events yourself). 
    } 
    self.yourPlayer = [[AVPlayer alloc] init]; 
} 

:

[[UIApplication sharedApplication] endReceivingRemoteControlEvents] 

변경 앱 재생로 의 Info.plist필요한 배경 모드 오디오

+0

오! 내 dealloc에서'endReceivingRemoteControlEvents'를 확실히 호출하지 않았습니다. 나는 암묵적으로 dealloc을 호출했다고 생각했다. 알아 둘만한. 'setActive : error :'무엇을하고 있습니까? dealloc 호출 외에도 내가 누락 된 유일한 부분입니다. – RileyE

+0

나는 문서를 다시 읽었을뿐 충돌이있을 경우 다른 응용 프로그램의 오디오를 덮어 쓰기로 알아 냈다. 감사! 나는 그것이 작동하는지 확인하기 전까지는 지금 이것을 체크하지 않은 상태로 두려고합니다. – RileyE

관련 문제