2011-03-29 2 views
1

iPhone 앱이 백그라운드에서 라디오를 재생하거나 스트리밍 할 수 있는지 확인해야합니다.백그라운드에서 라디오 재생

잘 작동하는 라디오 앱을 만들었습니다.

사용자가 백그라운드 프로세스에서 라디오를 재생할 수있는 기능을 추가하고 싶습니다. 즉, 라디오를 재생하기 위해 애플리케이션을 열어 둘 필요가없는 기능을 추가하고 싶습니다.

그들은 앱을 닫을 수 있으며 라디오는 여전히 재생 중입니다.

나는 애플이 백그라운드에서 라디오를 실행할 수있는 비공개 API를 가지고 있다고 오랫동안 읽었지 만 비공개이기 때문에 사용할 수 없다.

제안 사항?

+0

를 다음을 추가 음악은 배경에 있습니다. iOS가 지원하는 백그라운드 프로세스 중 하나입니다. – Robin

답변

4

iOS SDK는 4.0 이상이어야합니다. 대리자 코드의 첫 번째 :

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    if (isAbove4_0) 

{ 

     CTCallCenter *_center = [[CTCallCenter alloc] init]; 

     _center.callEventHandler = ^(CTCall *call) 
     { 

      //NSLog(@"call:%@", call.callState); 
      if ([call.callState isEqualToString:CTCallStateIncoming]) 

       { 

       [RadioPlayer pausePlayer]; 

     }   
    }; 
    } 

} 

다음, 내가 MPMoviePlayerController를 사용하고, AVPlayer를 확인하다;

if (isAbove4_0) { 
    if (_mpmovieplayer == nil) { 
     _mpmovieplayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
     [_mpmovieplayer setMovieControlMode:MPMovieControlModeHidden]; 
    } 

    [_mpmovieplayer setContentURL:url]; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 
    // This is necessary if you want to play a sequence of songs, otherwise your app will be 
    // killed after the first one finishes. 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

    UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid; 

    [_mpmovieplayer play]; 

    newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 
    if (newTaskId != UIBackgroundTaskInvalid && bgTaskId != UIBackgroundTaskInvalid) 
     [[UIApplication sharedApplication] endBackgroundTask: bgTaskId]; 
    bgTaskId = newTaskId; 

} 

추신 : 내 영어는 내가이 당신 :)에게 도움이 될 수있는 희망 가난

+0

영어에 대해 걱정할 필요가 없습니다. 친구, 시도해 보겠습니다. – iscavengers

0

이것이 저에게 맞는 방법입니다.

추가 응용 프로그램에서

<key>UIBackgroundModes</key> 
<array> 
<string>audio</string> 
</array> 

그런 다음 앱의 Info.plist 파일에 다음과 같은 : didFinishLaunchingWithOptions 내가 그것을 구현하는 방법에 대해 잘 모르지만, 예를 재생할 수

UIBackgroundTaskIdentifier backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
    /* just fail if this happens. */ 
    NSLog(@"BackgroundTask Expiration Handler is called"); 
    [application endBackgroundTask:backgroundTask]; 
}]; 
관련 문제