MPMoviePlayerViewController锁屏播放控件不起作用

5 objective-c playback mpmovieplayercontroller ios

我有一个具有以下设置的应用程序:

URMoviePlayerViewController扩展了MPMoviePlayerViewController

  • 实现了remoteControlReceivedWithEvent:(UIEvent*)事件的方法,以及:

    (void)viewDidLoad
    {
        [super viewDidLoad];    
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self becomeFirstResponder];
    }
    
    (BOOL) canBecomeFirstResponder
    {
        return YES;
    }
    
    Run Code Online (Sandbox Code Playgroud)

URPlayerViewController将URMoviePlayerViewController作为属性

    @property (nonatomic, strong) URMoviePlayerViewController *player;
Run Code Online (Sandbox Code Playgroud)
  • 当播放播放音频片段的电话时,播放器被初始化; 如果它已经初始化,它不会重新初始化播放器

  • URPlayerViewController有一个视图,它是一个自定义播放器,具有播放/暂停,下一个/上一个控件,它们被初始化并添加到viewDidLoad方法的子视图中

URAppDelegate将URPlayerViewController作为属性

    @property (nonatomic, strong) URPlayerViewController *playerViewController;
Run Code Online (Sandbox Code Playgroud)
  • playerViewController在应用程序didFinishLaunchingWithOptions中初始化

  • playerViewController的视图被添加到窗口中 - 这样自定义播放器在整个应用程序中都可见

问题:

一切都很顺利.在锁定屏幕上不时地播放控件(播放/暂停/下一个/上一个)停止工作.remoteControlReceivedWithEvent永远不会被调用.我一直无法重现这一点.

关于在回放期间调试此问题的任何建议或想法都会很棒,因为我无法一致地重现此问题.谢谢!

iDi*_*lip 1

我认为您缺少以下方法,只需将其添加到现有代码中并接受答案(如果可行):

从 viewdidload 中删除 beginReceivingRemoteControlEvents 并将其放入 viewdidAppear 中:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
Run Code Online (Sandbox Code Playgroud)

}