[使用AudioSession在后台唤醒应用程序,如Alarmy iOS应用程序

问题描述 投票:0回答:1

我正在尝试在后台唤醒应用程序。我看到一个应用程序在本地通知到达时在后台唤醒应用程序。应用名称为“警报”-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上想像定位服务一样唤醒应用程序,请告诉我。

ios swift alarm avaudiosession
1个回答
0
投票

根据我的观察,Alarmy应用正在为设置警报的指定时间设置本地通知的x号。

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

[终止时,它们会在那一刻触发一个通知,要求用户在指定时间内将应用保持在后台打开的状态,并通知x的数量为指定时间,如前所述。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.