iPhone:当应用程序进入后台时,为什么applicationMusicPlayer会退出?

时间:2010-09-01 01:25:38

标签: iphone background ios4

我做了一个小测试应用程序尝试隔离此问题,但它表现出相同的行为:当应用程序进入后台时,applicationMusicPlayer立即停止播放。我不知道我做错了什么,或者它是否是一个Apple bug。看起来很简单,如果它是一个Apple bug,其他人会遇到它并发布在它上面。

  • 我已将info.plist UIBackgroundModes键设置为Audio
  • 我已确认该应用未终止
  • 我在4.1 beta 3上测试了相同的结果
  • 我在网上搜索了类似的投诉。人们报告其他MPMediaPlayerController问题/错误,但更复杂,例如涉及与AVAudio的互动。

赞赏任何/所有建议。

以下是我的测试应用的核心:

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

2 个答案:

答案 0 :(得分:4)

MPMusicPlayerController不支持背景音频。您将需要使用AVAudioPlayer或AVPlayer(AVPlayer允许您通过AssetURL使用iPod库项目)。

原因是MPMusicPlayerController使用iPod应用程序播放音频,因此您的应用程序实际上并没有播放任何内容。

有关详细信息,请参阅Apple开发者论坛中的此主题:https://devforums.apple.com/thread/47905?start=0&tstart=120

答案 1 :(得分:0)

您是否为媒体播放器设置了合适的音频会话类型?操作系统使用会话类型在音频通道的竞争用途中做出决定。