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