2014-07-16 5 views
0

음악이라고하는 버튼이 있습니다.이 버튼을 클릭하면 MPMediaPickerController가 팝업되어 재생할 노래를 선택합니다. 앱에서 잘 돌아가지만 앱을 종료하고 다시 음악을 들으면 음악이 멈 춥니 다. 어떤 생각?MPMusicPlayerController를 사용하여 앱을 다시 열 때 음악을 다시 시작하는 방법

ViewController.h :

#import <UIKit/UIKit.h> 
#import <MediaPlayer/MediaPlayer.h> 
#import <AVFoundation/AVFoundation.h> 

@interface ViewController : UIViewController <MPMediaPickerControllerDelegate> 
{  
    MPMusicPlayerController *musicPlayer; 
    IBOutlet UIButton *music; 
    IBOutlet UIButton *stopmusic; 
} 

- (IBAction)music:(id)sender; 

@end 

ViewController.m :

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(notification:) 
               name:UIApplicationWillEnterForegroundNotification 
               object:nil]; 

은 그런 방법이있다 : 당신의 viewDidLoad 방법에

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (IBAction)stopmusic:(id)sender 
{  
    [musicPlayer stop]; 
} 

- (IBAction)music:(id)sender 
{ 
    MPMediaPickerController *musicSelect; 
    musicSelect = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; 
    musicSelect.delegate = self; 
    [self presentViewController:musicSelect animated:YES completion: nil]; 
} 

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker 
    didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection 
{ 
    musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; 
    [musicPlayer setQueueWithItemCollection:(MPMediaItemCollection *)mediaItemCollection]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    [musicPlayer play]; 
} 

- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

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

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

@end 
+0

간단한 음악 플레이어를 만들려고 할 때 같은 문제가 발생했지만 왜 이런 일이 발생했는지 파악할 시간을 투자하지 않았습니다. 재생 상태가 변경 될 때 디버깅하는 데 도움이되는'MPMusicPlayerControllerPlaybackStateDidChangeNotification'을 살펴볼 것을 제안합니다. – AdamPro13

답변

0

응용 프로그램이 전경에 들어갈 때에 대한 통지를 등록 앱이 전경에 다시 입장 할 때마다 실행됩니다. 인스턴스 속성을 사용하여 음악을 다시 재생합니다.

- (void)notification:(id)sender { 
    NSLog(@"Notification: %@", sender); 
    // add code to play again   

} 
관련 문제