如何在IOS程序中以后台模式关闭音乐?

时间:2012-12-17 01:49:10

标签: ios background-music

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

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

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

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

2 个答案:

答案 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应用程序中的倒数计时器。它可以关闭你的音乐并使设备进入睡眠状态。