2014-01-19 2 views
1

저는 타이머를 통해 일정한 간격으로 사운드를 재생하는 iPhone 앱을 쓰고 있습니다. 이 응용 프로그램의 첫 번째 버전은 오디오를 최소화했을 때 오디오를 재생했으나 화면이 비어있는 경우 일부 UI를 추가 한 후에 중지되었습니다. 나는 왜, 또는 어떻게 (UI 코드를 제거해도 문제를 해결할 수 없다) 진단하는 방법을 모르겠다.iOS 7 : 오디오가 백그라운드에서 재생되지 않습니다.

나는의 Info.plist 파일에 백그라운드 모드를 설정 한

: ("앱은 오디오 재생 또는 에어 플레이를 통해 오디오/비디오 스트림")와 나는 또한 내 응용 프로그램 위임에 다음있어 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    NSError *setCategoryErr = nil; 
    NSError *activationErr = nil; 

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback 
            error:&setCategoryErr]; 

    [[AVAudioSession sharedInstance] setActive:YES 
            error:&activationErr]; 
    return YES; 
} 
을 fAudioPlayer 유형의 AVAudioPlayer이다

self.fAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
    self.fAudioPlayer.numberOfLoops = 0; 
    [self.fAudioPlayer setVolume:volume]; 
    [self.fVolumeLevelSlider setValue:volume]; 

:

그리고 내 ViewDidLayoutSubViews 방법에, 나는 thusly 히 AVPlayer를 초기화. 내 타이머가 충돌 할 때,이 같은 오디오를 재생 : 난 아직도 내 변화를 통해 갈거야

self.fBGTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 
    [self.fAudioPlayer play]; 

보고 무엇인지, 무엇을, 나는 백그라운드에서 재생 중지 소리를 일으킬 수 있다는 점에서 두었다면 한 앱 버전에서 다음 앱 버전으로. 누군가는 여기에서 무엇을 볼 수 있습니까?

+0

백그라운드에서 타이머를 어떻게 실행합니까? –

답변

3

이동이 라인 :

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

내 타이머에서 재생을 시작하기 직전에이 문제를 해결. 응용 프로그램이 백그라운드에있는 경우에도 계속 연주하는 플레이어를 유지하기 위해

1

, 당신은 다음과 같은 주요

"필수 배경 모드"를 추가하여 응용 프로그램의 Info.plist 파일을 업데이트하고에 값을 추가해야 "앱에서 오디오를 재생하거나 AirPlay를 사용하여 오디오/비디오를 스트리밍합니다."

이 속성을 설정하면 앱이 최소화되거나 다른 앱이 열려있는 동안 (화면 보호기 포함) 앱이 백그라운드에서 오디오를 재생/스트리밍 할 수 있습니다.

관련 문제