什么是iOS Swift 2替代Android AlarmManager。
到目前为止,我发现关闭的事情是NSTimer。但这只适用于你的应用程序启动时,一旦它进入后台它就无法工作,我需要在后台和我的业务逻辑中运行一些功能来决定我是否想要做某事......例如,如果满足某些条件以显示本地通知。
修改
对于那些有相同问题的人来说,简单的答案就是在iOS上没有那样的。
唯一的解决方法是使用远程推送通知(无提示通知)来唤醒应用,然后您可以实现业务逻辑。
*重要提示
我在几个地方发现的是人们抱怨使用静默通知来执行此操作,因为您的应用程序可能会在应用程序商店中被拒绝。
如果有人在应用程序商店中使用此方法用于他的应用程序,请分享您的经验。
答案 0 :(得分:5)
没有。
正如评论中已经说明的那样,the documenation非常清楚:
始终尽量避免进行任何后台工作,除非这样做可以改善整体用户体验。应用程序可能会移至后台,因为用户启动了其他应用程序,或者因为用户已锁定设备而现在未使用该应用程序。在这两种情况下,用户都表示您的应用现在不需要做任何有意义的工作。
,但有以下例外:
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:
在后台播放用户可听内容的应用,例如音乐播放器应用
在后台录制音频内容的应用
随时向用户通知其位置信息的应用,例如导航应用
支持互联网协议语音(VoIP)的应用
需要定期下载和处理新内容的应用
从外部附件接收定期更新的应用
答案 1 :(得分:2)
相关部分:
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:
- 在后台播放用户可听内容的应用,例如音乐播放器应用
- 在后台录制音频内容的应用
- 随时向用户通知其位置信息的应用,例如导航应用
- 支持互联网协议语音(VoIP)的应用
- 需要定期下载和处理新内容的应用
- 从外部附件接收定期更新的应用
实施这些服务的应用必须声明其支持的服务,并使用系统框架来实现这些服务的相关方面。声明服务可以让系统知道您使用哪些服务,但在某些情况下,系统框架实际上会阻止您的应用程序被暂停。
如果您尝试调用的函数执行上述操作之一,则说明如何使用后台任务或其他方法来完成此操作。