我创建了一个iOS程序,使用AVAudioPlayer
在后台播放音乐。但我不知道如何在一段时间后关闭音乐。
我尝试使用UILocalNotification
在方法中停止音乐:
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notification
但这种方式只有在用户收到通知并点击关闭后才会有效!
如何在一段时间后自动停止音乐?
答案 0 :(得分:2)
如果您使用AVPlayer而不是AVAudioPlayer,则可以使用addBoundaryTimeObserverForTimes:queue:usingBlock:
我用AVQueuePlayer(它是AVPlayer的一个子类)尝试了这个并且它有效。
尝试这样的事情:
id observer = [avPlayer addBoundaryTimeObserverForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:CMTimeMake(60, 1)]] queue:NULL usingBlock:^{
[avPlayer pause];
}];
稍后某处:
[avPlayer removeTimeObserver:observer];
答案 1 :(得分:0)
我希望被证明是错的,但我相信你要求做的事可能是不可能的。我的印象是,如果用户实际单击“主页”按钮将您的应用程序发送到后台,则它无法用作“睡眠计时器”,因为您无法运行计时器。 Apple自己的应用程序可以执行此类操作,但它们具有特殊权限。
例如,看看这个应用程序:
https://itunes.apple.com/us/app/music-sleep-timer/id320583424?mt=8
看看他怎么说,“记得把这个应用程序放在前台!”显然,这是因为一旦应用程序成为后台,计时器就会停止工作。
您可能最好建议用户使用Apple的Clock应用程序中的倒数计时器。它可以关闭你的音乐并使设备进入睡眠状态。