5

저는 xcode 4.2를 사용 중이며 iphone 앱을 만들고 있으며 열 때 오디오 스트림을 재생할 수 있습니다.
내가 달성하려고하는 것은 앱이 백그라운드로 들어가더라도 계속 재생되도록하는 것입니다.
stackoverflow 또는 다른 곳에서 발견 된 가능한 솔루션을 시도한 및 사용할 수있는 많은 있지만 작동시키지 못할 수 있습니다. 응용 프로그램이 배경을 입력하면 오디오가 멈추고, 응용 프로그램을 다시 열면 오디오가 계속됩니다. 내가 무엇을 놓치고
Required Background Modes -> App plays audio &
Application does not run in background -> NOiphone - 백그라운드에서 오디오 스트림을 재생하십시오.

: 내의 Info.plist의 아이오와에서

2 개 행을 설정? 백그라운드에서 오디오를 계속 재생하려면 무엇이 더 필요합니까?
미리 감사드립니다.

편집 : 나는 AVAudio 프레임 워크의 사용을 제안하면서이 문제에 대한 많은 해답을 보았습니다. MPMoviePlayerController가 백그라운드에서 스트림을 재생할 수없는 경우가 있습니까? AVAudio로 바꿔야합니까?

EDIT 2 :
좋아, 달성하기에 너무 복잡해 보입니다. 정확한 코드를 제공하고 있습니다. 도움이 되길 바랍니다.

RadioStreamer.h

#import <UIKit/UIKit.h> 
#import "MediaPlayer/MediaPlayer.h" 
@interface RadioStreamer : UIViewController { 
    MPMoviePlayerController *player; 
    IBOutlet UIButton *playButton; 
    IBOutlet UIButton *pauseButton; 
} 
@property (nonatomic, retain) MPMoviePlayerController *player; 
@property (nonatomic, retain) IBOutlet UIButton *playButton; 
@property (nonatomic, retain) IBOutlet UIButton *pauseButton; 

- (IBAction)playButtonPressed:(id)button; 
- (IBAction)pauseButtonPressed:(id)button; 
- (void) playAudio; 
- (void) pauseAudio; 
@end 

RadioStreamer.m

#import "RadioStreamer.h" 
#import "tabbartestAppDelegate.h" 

@implementation RadioStreamer 
@synthesize player; 
@synthesize playButton; 
@synthesize pauseButton; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    return self; 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [email protected]""; 
    // Do any additional setup after loading the view from its nib. 

    if (!self.player) { 
     player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://s6.onweb.gr:8006/listen.pls"]]; 
     player.movieSourceType = MPMovieSourceTypeStreaming; 
     player.view.frame = CGRectMake(55, 180, 200, 30); 
     player.backgroundView.backgroundColor = [UIColor clearColor]; 
     player.view.backgroundColor = [UIColor clearColor]; 
     [self.view addSubview:player.view]; 
     [player play]; 
    } 
} 

- (void) playAudio { 
    if (player.playbackState != MPMoviePlaybackStatePlaying){ 
     [player play]; 
    } 
} 

- (void) pauseAudio { 
    if (player.playbackState == MPMoviePlaybackStatePlaying) { 
     [player pause]; 
    } 
} 

- (IBAction)playButtonPressed:(id)button { 
    [self playAudio]; 
} 

- (IBAction)pauseButtonPressed:(id)button { 
    [self pauseAudio]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 


- (void)dealloc { 
    [self.player release]; 
    [self.playButton release]; 
    [self.pauseButton release]; 
    self.player = nil; 
    self.playButton = nil; 
    self.pauseButton = nil; 
} 

@end 
+0

[iOS 5 - 앱이 시작될 때 백그라운드에서 오디오 파일을 재생할 수 있습니다.] (http://stackoverflow.com/questions/9199095/ios-5-play-audio-file-in-the-background) -when-the-app-is-launched) –

+0

감사합니다. Parth. 이 Q에서는 AVAudioPlayer가 사용되며 MPMoviePlayerController는 사용되지 않습니다. 차이가 없다고 생각하니? – CrisDeBlonde

+0

질문은 동일합니다. 유일한 접근 방식이 다릅니다. 당신이 접근 할 수 있다면 접근 방식을 바꿀 수 있습니다. –

답변

6

그 어떤 특별한주의를해야 할 수도 있습니다으로 오디오 세션 설정을 확인합니다.

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
             error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES 
            error:nil]; 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
+0

안녕하세요, 제 질문에 고마워합니다. AVAudioSession은 MPMoviePlayerController와 어떤 관계가 있습니까? 설명해 주시겠습니까? 어쨌든 코드를 추가해도 아무런 차이가 없습니다. – CrisDeBlonde

+0

@CrisDeBlonde AudioSession 설명서를 확인해야합니다. – Till

+1

마지막으로 이것이 해결책 인 것처럼 보이지만 어떤 이유로 시뮬레이터에서는 백그라운드에서 재생되지 않습니다. 기기에서 테스트 해보니 매력처럼 작동합니다. – CrisDeBlonde

관련 문제