0

我制作了一个 iOS 程序来使用AVAudioPlayer在后台播放音乐。但我不知道如何在一段时间后关闭音乐。我尝试UILocalNotification在方法中使用停止音乐:

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notification

但该方式只有在用户收到通知并点击关闭后才有效!

如何在一定时间后自动停止音乐?

4

2 回答 2

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];
于 2012-12-17T03:22:29.650 回答
0

我很想被证明是错误的,但我相信你要求做的事情可能是不可能的。我的印象是,如果用户真的点击 Home 按钮将你的应用程序发送到后台,它就不能作为“睡眠定时器”,因为你不能运行定时器。苹果自己的应用程序可以做这种事情,但他们有特权。

例如,看看这个应用程序:

https://itunes.apple.com/us/app/music-sleep-timer/id320583424?mt=8

看看他是怎么说的,“记得把这个应用程序放在前台!” 显然这是因为一旦应用程序处于后台,计时器就会停止工作。

您最好建议用户使用 Apple 时钟应用程序中的倒数计时器。它可以关闭您的音乐并使设备进入睡眠状态。

于 2012-12-17T02:14:53.710 回答