Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:在应用程序处于非活动状态后,报警应用程序如何播放声音?_Ios_Swift_Avaudiosession - Fatal编程技术网

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

iOS:在应用程序处于非活动状态后,报警应用程序如何播放声音?,ios,swift,avaudiosession,Ios,Swift,Avaudiosession,许多闹钟应用程序在几个小时后设法在锁定的屏幕上播放声音(例如:上升、波动闹钟) 你所需要做的就是在应用程序打开时设置闹钟并锁定屏幕,并且在屏幕锁定数小时后闹钟将熄灭 我设法找到了在设备锁定时如何使用AVPlayer播放音频的方法: 将后台功能设置为音频 将“应用程序不在后台运行”设置为“是” 代码: do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) print(

许多闹钟应用程序在几个小时后设法在锁定的屏幕上播放声音(例如:上升、波动闹钟)

你所需要做的就是在应用程序打开时设置闹钟并锁定屏幕,并且在屏幕锁定数小时后闹钟将熄灭

我设法找到了在设备锁定时如何使用AVPlayer播放音频的方法:

  • 将后台功能设置为音频

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

  • 代码:

    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来运行播放我的音频文件并锁定iPhone的代码时,计时器会很快停止,因为很明显,应用程序在几秒钟后就会停止运行 (但仅当我从主屏幕启动应用程序时,并且当我从xcode运行应用程序时不会启动,顺便说一句)


    这些闹钟应用程序是如何延迟音频的?

    这些应用程序通过选择退出多任务模式来实现这一点。如果应用程序选择退出多任务模式,则当设备锁定时,如果应用程序位于前台,则应用程序不会暂停,因此,当时间到达时,应用程序能够播放警报声。您可以阅读更多内容(代表问题作者发布答案,将其移至答案空间)


    我知道他们是怎么做的。我设了一个闹钟,听了喇叭的声音。这些应用程序播放静音以保持活动状态。我不知道他们是如何通过苹果公司的检查的,但显然很多闹钟应用程序都是这样做的,并且通过了。

    本地通知,可能是操作。本地通知最多只能发出30秒的声音,而且在静默状态下不会响,但这些应用程序可以将警报放入您的日历(警报类型的事件)。