我制作了一个 iOS 程序来使用AVAudioPlayer
在后台播放音乐。但我不知道如何在一段时间后关闭音乐。我尝试UILocalNotification
在方法中使用停止音乐:
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notification
但该方式只有在用户收到通知并点击关闭后才有效!
如何在一定时间后自动停止音乐?
我制作了一个 iOS 程序来使用AVAudioPlayer
在后台播放音乐。但我不知道如何在一段时间后关闭音乐。我尝试UILocalNotification
在方法中使用停止音乐:
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notification
但该方式只有在用户收到通知并点击关闭后才有效!
如何在一定时间后自动停止音乐?
如果您使用 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];
我很想被证明是错误的,但我相信你要求做的事情可能是不可能的。我的印象是,如果用户真的点击 Home 按钮将你的应用程序发送到后台,它就不能作为“睡眠定时器”,因为你不能运行定时器。苹果自己的应用程序可以做这种事情,但他们有特权。
例如,看看这个应用程序:
https://itunes.apple.com/us/app/music-sleep-timer/id320583424?mt=8
看看他是怎么说的,“记得把这个应用程序放在前台!” 显然这是因为一旦应用程序处于后台,计时器就会停止工作。
您最好建议用户使用 Apple 时钟应用程序中的倒数计时器。它可以关闭您的音乐并使设备进入睡眠状态。