iOS AVPlayer v.MPMusicPlayerController

时间:2015-10-09 16:07:25

标签: ios avplayer mpmusicplayercontroller

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

那么,有没有人知道

  1. AVPlayer播放iCloud歌曲或
  2. 的任何聪明方法
  3. 当应用在后台时,让我的应用识别通过MPMusicPlayerController播放的歌曲何时完成?

2 个答案:

答案 0 :(得分:2)

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

此外,您需要在beginGeneratingPlaybackNotifications()MPMusicPlayerController.applicationMusicPlayer()

的实例上使用MPMusicPlayerController.systemMusicPlayer()

答案 1 :(得分:1)

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

例如,在退出并终止应用程序进程时使用NSNotificationCenter属性时,音乐会继续播放。如果用户想要停止音乐,当他们exityou可以称之为:

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属性在不同的应用程序运行时阶段调用各种方法。

希望这有帮助,如果您有任何其他问题,请与我们联系。