iOS Swift 3:实现模拟Android的通知链';报警管理器

iOS Swift 3:实现模拟Android的通知链';报警管理器,android,ios,swift3,notifications,uilocalnotification,Android,Ios,Swift3,Notifications,Uilocalnotification,我正在实现一个带有内部日历的应用程序,从远程web服务获取。我想在日历中安排了感兴趣的事件时,在用户选择的特定时间向用户发送本地通知。就像iOS日历应用程序一样,您可以创建事件并要求在事件发生前X小时/天收到通知。主要区别在于您无法创建事件:它们是从预先填充的远程日历下载的 在Android中,我使用AlarmManager解决了这个问题,而在使用Swift 3的iOS中,我最接近于移植相同解决方案的方法是通过机会主义的后台数据获取。这两种解决方案的主要区别在于,当应用程序被终止时,后台数据获取

我正在实现一个带有内部日历的应用程序,从远程web服务获取。我想在日历中安排了感兴趣的事件时,在用户选择的特定时间向用户发送本地通知。就像iOS日历应用程序一样,您可以创建事件并要求在事件发生前X小时/天收到通知。主要区别在于您无法创建事件:它们是从预先填充的远程日历下载的

在Android中,我使用AlarmManager解决了这个问题,而在使用Swift 3的iOS中,我最接近于移植相同解决方案的方法是通过机会主义的后台数据获取。这两种解决方案的主要区别在于,当应用程序被终止时,后台数据获取无法工作

对我来说,即使应用程序被关闭,本地通知也能正常工作,这一点非常重要。我认为用户希望应用程序通知即使在应用程序关闭时也能工作,就像WhatsApp或Facebook一样。我知道这些通知是由某人编写的东西触发的,因此它们是推送通知,但一般用户只希望即使在应用程序关闭时通知仍能继续工作

在iOS中“模仿”安卓AlarmManager行为的最优雅解决方案是什么?

提前安排一系列通知希望用户最终在所有通知退出队列之前打开应用程序,这看起来是一个设计糟糕的解决方案

另外,将所有工作委托给服务器,并将通知推送到订阅的设备,这看起来也很糟糕,因为这需要在服务器端进行更多的工作。此外,它还需要一个能够唤醒自身以发送推送通知的服务器,这是我所没有的。我只有一个简单的Web服务器来响应HTTP请求



编辑:我要寻找的理想解决方案不是前两个选项中的任何一个,因为我发现它们更像是解决我认为是一个相当常见问题的变通方法,而不是真正优雅的解决方案。必须有第三种选择…

在iOS中,没有办法实现这一点。在查看的文档中,它指出

如果用户强制退出应用程序,系统不会自动启动应用程序。在这种情况下,用户必须重新启动应用程序或重新启动设备,然后系统才会尝试再次自动启动应用程序


您可以接收推送通知,但在用户启动您的应用程序之前,不会执行任何代码。因此,除非您从服务器发送远程推送通知,否则在用户打开您的应用程序之前,您无法设置新的本地通知。

我习惯于每天关闭一次或两次所有应用程序,并且我仍然会收到来自WhatsApp/Telegram/任何内容的推送通知。也许它们不会触发代码执行,但它们确实会到达用户。你是对的,即使你的应用程序被终止,你也可以接收推送通知,但你不能在后台执行代码,因此你不能安排新的本地通知。请参阅我的最新答案。请查看类似问题的答案。此链接如何:。他们谈论远程/静默通知