繁体   English   中英

iOS AVPlayer诉MPMusicPlayerController

[英]iOS AVPlayer v. MPMusicPlayerController

我正在编写一个音乐播放应用程序,该程序在每首歌曲之间执行一项任务。 即使应用程序在后台,我也需要这样做,所以我需要知道歌曲何时完成。 目前,我正在使用AVPlayer ,即使应用程序在后台,它也可以发送通知,但无法播放用户iCloud上的歌曲。 MPMediaPlayerController可以播放iCloud歌曲,但在后台运行时不发送通知(这对于我的应用程序至关重要)。

所以,有人知道吗

  1. AVPlayer播放iCloud歌曲的任何巧妙方法,或者
  2. MPMusicPlayerController播放的歌曲时,让我的应用识别吗?

您是否尝试过使用NSNotification Center和这两个观察者之一? MPMusicPlayerControllerPlaybackStateDidChangeNotificationMPMusicPlayerControllerNowPlayingItemDidChangeNotification

此外,您还需要使用beginGeneratingPlaybackNotifications()在您的实例MPMusicPlayerController.applicationMusicPlayer()MPMusicPlayerController.systemMusicPlayer()

以@Kim的答案为基础。 您可以使用NSNotificationCenter并添加ObserverEvents 我为我的应用程序使用MPMusicPlayerController类,并且已经注册了该应用程序以使用NSNotificationCenter属性,因此我可以在不同的事件期间调用某些方法。

例如,在使用SystemMusicPlayer属性时,如果退出并终止应用程序进程,则音乐将继续播放。 如果用户要在退出时停止播放音乐,可以致电:

-(void) registerMediaPlayerNotifications {
    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver:self
                           selector:@selector(stopMusicWhenApplicationQuits)
                               name:UIApplicationWillTerminateNotification
                             object:[UIApplication sharedApplication]];
    [musicPlayer beginGeneratingPlaybackNotifications];
}

您在其中看到@selector的方法,当应用程序收到UIApplicationWillTerminateNotification事件时将触发该方法。 您可以在musicPlayer中说什么

[self.musicPlayer stop];

因此,对于您遇到的问题,您仍然可以使用MediaPlayer框架,使用MPMusicPlayerController类,并使用NSNotificationCenter属性在不同的应用程序运行时阶段调用各种方法。

希望对您有所帮助,如有其他问题,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM