[英]iOS AVPlayer v. MPMusicPlayerController
我正在编写一个音乐播放应用程序,该程序在每首歌曲之间执行一项任务。 即使应用程序在后台,我也需要这样做,所以我需要知道歌曲何时完成。 目前,我正在使用AVPlayer
,即使应用程序在后台,它也可以发送通知,但无法播放用户iCloud上的歌曲。 MPMediaPlayerController
可以播放iCloud歌曲,但在后台运行时不发送通知(这对于我的应用程序至关重要)。
所以,有人知道吗
AVPlayer
播放iCloud歌曲的任何巧妙方法,或者 MPMusicPlayerController
播放的歌曲时,让我的应用识别吗? 您是否尝试过使用NSNotification Center和这两个观察者之一? MPMusicPlayerControllerPlaybackStateDidChangeNotification
或MPMusicPlayerControllerNowPlayingItemDidChangeNotification
。
此外,您还需要使用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.