使用AlarmSession之类的AudioSession在后台唤醒应用程序

时间:2019-04-06 07:33:26

标签: ios swift alarm avaudiosession

我正在尝试在后台唤醒应用程序。我看到一个应用程序在本地通知到达时在后台唤醒应用程序。应用名称为“警报”-https://itunes.apple.com/us/app/alarmy-alarm-clock/id1163786766?mt=8

我已经查看了苹果文档的后台模式-https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

我发现在后台启动应用程序的一个提示-“对于音频应用程序,音频框架需要该应用程序处理一些数据。(音频应用程序包括那些播放音频或使用麦克风的应用程序。)”但是我没有找不到任何技术帮助。

关于Alarmy应用程序,我在这里发现了2或3个问题,他们都说他们正在通过AVAudioSession类别播放来播放无声声音。 我确实尝试过,但是当本地通知到来时,它并不能帮助我唤醒应用程序。

直到现在,我都进行了无声音频的无限循环,并且还设置了音频会话,但无法唤醒应用程序。

let audioSession = AVAudioSession.sharedInstance()
    try? audioSession.setCategory(.playback, mode: .default, options: .mixWithOthers)
    try? audioSession.setActive(true)

audioPlayer = try! AVAudioPlayer.init(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "Birthday_6", ofType: "mp3")!))
    audioPlayer?.numberOfLoops = -1
    audioPlayer?.play()

如果有人在AVAudioSession上有想法要像定位服务一样唤醒应用程序,请告诉我。

1 个答案:

答案 0 :(得分:0)

根据我的观察,Alarmy应用程序在设置警报的指定时间内设置了x条本地通知。

当应用程序进入后台时,他们正在设置x个本地通知数量。并在应用程序进入前台时使所有待处理的通知无效。这是一个循环,当应用程序进入前台并返回到后台时,它将继续重复。

终止时,它们会在那一刻触发一条通知,要求用户在指定时间内将应用保持在后台打开状态,同时x条通知会在指定时间内显示。

当应用不在前台时,会在警报时间触发x号通知,在每个通知之间有一个特定的时间间隔,这就是正在播放的声音的长度,使被触发的通知的音乐或声音具有连续性。

当警报触发时,如果应用程序正在运行,它将像常规警报一样响起,直到将其关闭。如果您单击“关闭”以外的任何内容,或者在这段时间内强行关闭了应用程序,则会触发前面提到的循环,并会继续使用本地通知发出声音,直到单击应用程序中的“关闭”按钮为止。