我做了一个小测试应用程序尝试隔离此问题,但它表现出相同的行为:当应用程序进入后台时,applicationMusicPlayer立即停止播放。我不知道我做错了什么,或者它是否是一个Apple bug。看起来很简单,如果它是一个Apple bug,其他人会遇到它并发布在它上面。
赞赏任何/所有建议。
以下是我的测试应用的核心:
MPTest.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <MediaPlayer/MediaPlayer.h>
@interface MPTestViewController : UIViewController <MPMediaPickerControllerDelegate> {
MPMusicPlayerController *MPPlayer;
}
@property (nonatomic, retain) MPMusicPlayerController *MPPlayer;
@end
MPTest.m
#import "MPTestViewController.h"
@implementation MPTestViewController
@synthesize MPPlayer;
- (void)viewDidLoad {
[super viewDidLoad];
// get the application music player
self.MPPlayer = [MPMusicPlayerController applicationMusicPlayer];
// break to allow application didFinishLaunching to complete
[self performSelector:@selector(presentMPPicker) withObject:nil afterDelay:0.01];
}
- (void)presentMPPicker {
// present the picker in a modal view controller
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];
picker.delegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
// delegate called after user picks a media item
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
[self dismissModalViewControllerAnimated:YES];
// tell the player what to play
[MPPlayer setQueueWithItemCollection:mediaItemCollection];
// start playing
[MPPlayer play];
}
@end
答案 0 :(得分:4)
MPMusicPlayerController不支持背景音频。您将需要使用AVAudioPlayer或AVPlayer(AVPlayer允许您通过AssetURL使用iPod库项目)。
原因是MPMusicPlayerController使用iPod应用程序播放音频,因此您的应用程序实际上并没有播放任何内容。
有关详细信息,请参阅Apple开发者论坛中的此主题:https://devforums.apple.com/thread/47905?start=0&tstart=120
答案 1 :(得分:0)
您是否为媒体播放器设置了合适的音频会话类型?操作系统使用会话类型在音频通道的竞争用途中做出决定。