gpt4 book ai didi

iphone - 在后台媒体播放期间响应 MPMoviePlayerController 通知

转载 作者:可可西里 更新时间:2023-11-01 03:52:55 27 4
gpt4 key购买 nike

我有一个应用程序可以从网络流式传输视频并使用 MPMoviePlayerController 对象在设备上或通过 AirPlay 播放视频。

该应用程序支持后台操作,并在其 plist 文件中所需的 UIBackgroundModes 键中列出了“音频”选项。

通过AirPlay播放时,应用可以成功推送到后台,视频继续正常播放。到目前为止,还不错。

根据Apple documentation :

Including the audio key tells the system frameworks that they should continue playing and make the necessary callbacks to the app at appropriate intervals. If the app does not include this key, any audio being played by the app stops when the app moves to the background.

但是,没有进行这些回调。

该应用程序使用两种类型的回调:与通知相关联的回调 MPMoviePlayerControllerAVPlayer 在播放期间发送,以及基于计时器的回调,用于监控播放位置和性能统计信息以进行监控目的。

看Apple的注释,我当然希望收到第一种回调,以便应用程序可以响应MPMoviePlayerPlaybackStateDidChangeNotificationMPMoviePlayerPlaybackDidFinishNotificationMPMoviePlayerLoadStateDidChangeNotification,但这不会发生。

有谁知道是否可以在后台 AirPlay 播放期间接收到这些,如果可以,这是如何实现的?

**请注意:该应用程序在前台运行时可以正常工作,并且可以正常接收通知。只有当推送到后台并通过 AirPlay 播放时才不会收到通知。

同样,视频可以在后台通过 AirPlay 正常播放。只有通知没有收到**

最佳答案

虽然几个月前我遇到了这个问题并已修复它。如果这不起作用,我可以将我的整个类(class)发送给您进行电影播放。请注意,它使用的是导航 Controller 模型。

注意:这是在 iPad 2 而不是 iPhone 上测试的。

我这样展示我的 VC:

 - (IBAction)playMovie:(id)sender {

MovieVC* movController = [[MovieVC alloc] initWithID:2];
movController.view.backgroundColor = [UIColor blackColor];
AppDelegate *appDel = [[UIApplication sharedApplication] delegate];

[appDel.navigationController pushViewController:movController animated:NO];
[movController release];
}

然后在我的 MovieVC View Controller 类中,我像这样设置视频播放:

- (void)initMoviePlayer {

mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[self getMovieURL]];

mMoviePlayer.allowsAirPlay = YES;

mMoviePlayer.view.frame = [self.view bounds];

mMoviePlayer.view.backgroundColor = [UIColor clearColor];

mMoviePlayer.shouldAutoplay = YES;

mMoviePlayer.fullscreen = YES;

mMoviePlayer.scalingMode = MPMovieScalingModeAspectFit;

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePreloadDidFinish:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:mMoviePlayer];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
}

这为我修复了它,如果它不能修复整个类文件的注释和错误编辑。

关于iphone - 在后台媒体播放期间响应 MPMoviePlayerController 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com