Iphone MPMoviePlayer在应用程序转到后台时播放

Iphone MPMoviePlayer在应用程序转到后台时播放,iphone,objective-c,ios5,mpmovieplayercontroller,Iphone,Objective C,Ios5,Mpmovieplayercontroller,我正在使用iOS5 我正在从事HTTPLivestream项目。这里我使用的是MPMovieplayer,我的问题是当应用程序转到后台时没有音频。我正在改变plist的背景模式是音频。但没有结果,请帮助我 阿普德尔 无线电控制视图 提前感谢您需要结合ios5中的后台支持设置进行远程控制设置- //为远程控制注册你的应用程序 if([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemot

我正在使用iOS5

我正在从事HTTPLivestream项目。这里我使用的是MPMovieplayer,我的问题是当应用程序转到后台时没有音频。我正在改变plist的背景模式是音频。但没有结果,请帮助我

阿普德尔 无线电控制视图
提前感谢

您需要结合ios5中的后台支持设置进行远程控制设置-

//为远程控制注册你的应用程序

if([[UIApplication sharedApplication]  respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


// allows you to play in the background when app is suspended in iOS5
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];

将这两个设置放置在application didFinishLaunching delegate中

您需要结合ios5中的后台支持设置进行远程控制设置-

//为远程控制注册你的应用程序

if([[UIApplication sharedApplication]  respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


// allows you to play in the background when app is suspended in iOS5
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];

将这两个设置放置在application didFinishLaunching delegate中

在初始化播放器之前尝试激活音频会话,例如在app launch delegate中:

- (void)applicationDidFinishLaunching:(UIApplication *)application
  NSError *error = nil;
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
  [[AVAudioSession sharedInstance] setActive:YES error:&error];

  // other init stuff ...
}

PS:您需要在设备上才能使用音频会话,模拟器不会将其切断。

在初始化播放器之前尝试激活音频会话,例如在应用程序启动代理中:

- (void)applicationDidFinishLaunching:(UIApplication *)application
  NSError *error = nil;
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
  [[AVAudioSession sharedInstance] setActive:YES error:&error];

  // other init stuff ...
}

PS:您需要在设备上进行音频会话才能工作,模拟器不会切断它。

如果您在模拟器上测试,那么它在模拟器上不工作,请使用设备。若你们正在使用设备,并且音频并没有在后台播放,那个么你们可以通过电子邮件将你们的完整源代码发送给我吗khalid0491@gmail.com. 我在申请表中也做了。 我的代码如下

- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSError *setCategoryErr = nil;
    NSError *activationErr  = nil;
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
    [[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
}

在plist中,我制作了一个名为“Required background mode”的数组,并在数组名中插入一项“App Plays Audio”。

如果您在模拟器上测试,那么它在模拟器上不工作,请使用该设备。若你们正在使用设备,并且音频并没有在后台播放,那个么你们可以通过电子邮件将你们的完整源代码发送给我吗khalid0491@gmail.com. 我在申请表中也做了。 我的代码如下

- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSError *setCategoryErr = nil;
    NSError *activationErr  = nil;
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
    [[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
}


在plist中,我制作了一个名为“Required background mode”的数组,并在数组名中插入了一个项目,“App Plays Audio”。

感谢您的重播,但仍然无法工作,电影播放器是否可以工作background@Nag-如果您只需要音频,则可以使用AVAudioPlayer而不是MPMoviePlayer。感谢您的重播,但仍然无法正常工作,有可能是电影播放器在工作吗background@Nag-如果您只需要音频,则可以使用AVAudioPlayer而不是MPMoviePlayer。遥控设置通常与音频会话配置无关!感谢您的重播,但仍然无法工作。是否可能电影播放器在后台工作是的,您在ios4之前工作是正确的,但在iOS5中,我们需要背景音频支持的设置(遥控和背景设置)。遥控设置通常与音频会话配置无关!感谢您的重播,但仍然无法工作..是否有可能电影播放器在后台工作是的,当您工作到ios4时您是对的,但在iOS5中,我们需要背景音频支持的设置(遥控器和背景设置)。您在Plist中正确添加了吗???我第一次在数组“Required Background Modes”之外而不是数组内部添加字符串。真是太棒了,哈立德·乌斯曼先生……它比你花那么多宝贵的时间更有效。问题就在这里不,问题!你也应该对与plist相关的评论投赞成票,也许这会对其他人有所帮助。Thanks@Khalidi只需编辑u r代码..添加以下行(必须)[[UIApplication sharedApplication]beginReceivingRemoteControlEvents];UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:NULL]@Nag_iphone,不需要取消已接受答案的标记。为了您的理解,我只粘贴了最简单的代码,否则我已经实现了它和其他代码。请注意,没有必要将[UIApplication sharedApplication]之类的代码放在ViewDidLoad中,您可以根据您的逻辑在任何地方执行,我的代码工作正常。您是否已在Plist中正确添加了这些代码???我第一次在数组“Required Background Modes”之外而不是数组内部添加字符串。真是太棒了,哈立德·乌斯曼先生……它比你花那么多宝贵的时间更有效。问题就在这里不,问题!你也应该对与plist相关的评论投赞成票,也许这会对其他人有所帮助。Thanks@Khalidi只需编辑u r代码..添加以下行(必须)[[UIApplication sharedApplication]beginReceivingRemoteControlEvents];UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:NULL]@Nag_iphone,不需要取消已接受答案的标记。为了您的理解,我只粘贴了最简单的代码,否则我已经实现了它和其他代码。请注意,没有必要将类似[UIApplication sharedApplication]的代码放在ViewDidLoad中,您可以根据您的逻辑在任何地方执行,我的代码工作正常。