Ios 在后台应用程序和本地通知触发时执行代码

Ios 在后台应用程序和本地通知触发时执行代码,ios,swift,notifications,background,Ios,Swift,Notifications,Background,这里有一个非常棘手的情况:我正在用swift编写一个报警应用程序。在发出警报的那一刻,应用程序很可能在后台,或者被杀死,甚至更糟糕的是,iPhone被锁定。一旦警报触发,应用程序应在后台自动设置另一个通知。只有在应用程序位于前台时,我才能在AppDelegate中执行此操作,但在后台,我只能设置带有良好附件和声音的通知,但不会执行任何代码。在后台收到带有锁定设备的本地通知后,我无法调用方法。 非常感谢您的帮助。我不确定有没有解决办法。非常感谢。阅读它时说,如果应用程序在前台或后台运行,则会调用此

这里有一个非常棘手的情况:我正在用swift编写一个报警应用程序。在发出警报的那一刻,应用程序很可能在后台,或者被杀死,甚至更糟糕的是,iPhone被锁定。一旦警报触发,应用程序应在后台自动设置另一个通知。只有在应用程序位于前台时,我才能在AppDelegate中执行此操作,但在后台,我只能设置带有良好附件和声音的通知,但不会执行任何代码。在后台收到带有锁定设备的本地通知后,我无法调用方法。 非常感谢您的帮助。我不确定有没有解决办法。非常感谢。

阅读它时说,如果应用程序在前台或后台运行,则会调用此方法

你可能会发现有用的是

此外,如果启用了远程通知后台模式, 系统启动应用程序(或将其从挂起状态唤醒) 并在收到远程通知时将其置于后台状态 到达。但是,如果出现以下情况,系统不会自动启动您的应用程序: 用户已强制退出它。在这种情况下,用户必须重新启动 在系统尝试启动之前,请关闭应用程序或重新启动设备 您的应用程序将自动重新启动

所以,我不认为你可以绕过死亡的场景。但启用后台模式后,您至少可以将应用程序从最多暂停模式唤醒

阅读苹果的文章,尤其是了解你的应用程序在后台启动的部分。它说后台执行是

应用程序的推送通知到达,通知的有效负载包含值为1的内容可用密钥


您可以在这里做一些或大部分您想做的事情。

但是op特别询问了当地通知,我没有注意到@paulw11当地通知不是这样工作的。如果你的应用程序未运行,你将无法设置其他警报。如果可以在后台完成,但从你所说的判断,听起来你需要涵盖应用程序没有运行的情况。对于本地通知,您需要在使用应用程序时设置所有通知,以涵盖应用程序未运行的情况。如果您的需求使这成为不可能,那么接下来要考虑的是推送通知,然后您需要在服务器上进行所有计算。