要实现这个功能并没有太多可行的方法,而且没有一种是完美的。
使用后台配置的URLSession。根据文档,您可以安排请求。仅适用于iOS 11及以上版本,不能保证请求将被执行。
使用VoIP或静默推送。这些类型的推送在设备接收到时有可能在后台启动应用程序。虽然这种方法有点棘手,但可以完成任务。如果用户没有互联网连接,则无法使用此方法。
将应用程序保持在前台。最简单的方法,效果很好。但会对设备电池造成很大负担。
更新:为了将所有答案集中在一个地方(感谢@jba)。
还有一种可能性是使用“音频和Airplay”后台类别。您可以在设备锁定时播放“静音”或录制音频。这种方法非常耗能,而且一些操作系统中断,如电话呼叫,可能会停止音频播放/录制并暂停应用程序。
苹果不会给你太多实现这一点的方法,但你所拥有的几种方法都是很好且相当精确地文档化的。 对于你的应用程序,我建议选择“音频和Airplay”选项,因为它将允许你在后台播放和/或记录音频。然后你需要努力找到合适的方式来解释为什么要这样做以及对用户的好处是什么......最终,这个功能将让你的应用程序一直保持活动状态,直到触发警报,然后播放你的音频文件。