iOS:应用程序处于非活动状态后,警报应用程序如何播放声音?

时间:2017-01-12 22:37:17

标签: ios swift avaudiosession

许多闹钟应用程序在几个小时后设置了锁定屏幕播放声音(例如:Rise,Wave闹钟)

您需要做的就是在应用程序打开时设置闹钟并锁定屏幕,并在屏幕锁定几小时后闹钟响起。

当我的设备被锁定时,我设法弄清楚如何使用AVPlayer播放音频:

  1. 将背景功能设置为音频

  2. 设置'应用程序不在后台运行'到是

  3. 3

        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            print("AVAudioSession Category Playback OK")
        do {
            try AVAudioSession.sharedInstance().setActive(true)
            print("AVAudioSession is Active")
            } catch let error as NSError {
                print(error.localizedDescription)
            }
        } catch let error as NSError {
            print(error.localizedDescription)
        }
    

    当我尝试设置NSTimer或使用dispatch_after运行播放我的audiofile的代码并锁定我的iPhone时,Timer会很快停止,因为显然应用程序在几秒钟后就会变为非活动状态 (但只有当我从主屏幕启动应用程序并且当我从xcode运行应用程序时没有,顺便说一下)

    有没有人知道这些闹钟应用程序如何设法延迟音频? 谢谢你的帮助!

    编辑: 我想出他们是怎么做到的。我发出警报并听取了发言者的意见。这些应用程序播放静音以保持活跃状态​​。不知道他们是如何通过苹果的检查,但显然许多闹钟应用程序这样做并通过

2 个答案:

答案 0 :(得分:0)

这些应用通过选择退出多任务模式来实现这一目标。如果应用程序选择退出多任务模式,则当设备被锁定时,如果应用程序位于前台,则应用程序不会被暂停,因此当时间到达时它们能够播放警报声。您可以阅读更多here

答案 1 :(得分:-1)

(代表问题作者发布的答案,将其移至答案空间)

我弄清楚了他们是怎么做到的。我设置了闹钟并听了扬声器。这些应用会播放静音声音以保持活动状态。我不知道他们是如何通过Apple的支票的,但是显然许多闹钟应用程序都这样做并通过了。