当 playerviewcontroller 不再可用时 属性 在哪里放置 registerForRemoteNotifications

Where to property place registerForRemoteNotifications when playerviewcontroller no longer available

我的应用有一个 MainViewController、一个 PlaylistViewController 和一个 PlayerViewController。

当您 return 进入主屏幕时,一切正常,在后台播放音频。

PlayerViewController 在其 viewDidAppear 中调用 registerForRemoteNotifications 以捕获来自控制中心和耳机控件的通知。当此控制器在前台时,会收到来自控制中心/耳机的通知,pause/play 工作正常。

但是,如果在播放音频时 return PlayListViewController 或 MainViewController 然后 return 到主屏幕(音频仍在正常播放),但是来自控件的远程通知中心不再发送到 PlayerViewController 显然是因为它不再存在。

为了做到这一点,我是否需要在 AppDelegate 和 PlayerViewController 中创建静态 AVAudioPlayer 对象,并将 registerForRemoteNotifications 与 PlayerViewController 中的逻辑一起移动到 AppDelegate 以处理来自控制中心和耳机设备的暂停/播放并访问我的 PlayerViewController 中的 AppDelegates 静态对象?

整个远程通知逻辑应该位于应用程序委托 class 中,因为这是唯一 class 在应用程序生命周期中可靠地存在的。

因为可以使用

从任何地方访问应用程序委托
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

您可以创建对其他 classes 的引用或实现委托方法以便能够正确处理通知。