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

Dan*_*zke 6 ios avaudiosession swift

许多闹钟应用程序在几个小时后设法在锁定屏幕的情况下播放声音(例如:起床、挥手闹钟)

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

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

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

  2. 将“应用程序不在后台运行”设置为“是”

  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)
    }
    
    Run Code Online (Sandbox Code Playgroud)

当我尝试设置 NSTimer 或使用dispatch_after 运行播放音频文件并锁定 iPhone 的代码时,计时器很快停止,因为显然应用程序在几秒钟后就变得不活动(但只有当我从家里启动应用程序时)屏幕,但当我从 xcode 运行应用程序时却没有,顺便说一句)

这些闹钟应用程序如何设法延迟音频?

Var*_*pta 1

这些应用程序通过选择退出多任务模式来实现这一点。如果应用程序选择退出多任务模式,并且设备锁定时应用程序位于前台,则该应用程序不会暂停,因此它们可以在时间到达时播放警报声音。你可以在这里阅读更多