Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AlarmManager的iOS替代方案_Ios_Swift - Fatal编程技术网

Android AlarmManager的iOS替代方案

Android AlarmManager的iOS替代方案,ios,swift,Ios,Swift,iOS Swift 2是Android AlarmManager的替代品 到目前为止,我发现的是NSTimer。但这只在应用程序启动时起作用,一旦它进入后台,它将无法工作,我需要在后台运行一些函数,并根据我的业务逻辑来决定是否要执行某些操作…例如,是否满足某些条件以显示本地通知 编辑 对于那些有相同问题的人来说,简单的回答是,iOS上没有这样的问题 唯一的解决办法是使用远程推送通知(静默通知)来唤醒应用程序,然后您就可以实现您的业务逻辑。 *重要提示 从我在一些地方发现的情况来看,人们抱怨使用静

iOS Swift 2是Android AlarmManager的替代品

到目前为止,我发现的是NSTimer。但这只在应用程序启动时起作用,一旦它进入后台,它将无法工作,我需要在后台运行一些函数,并根据我的业务逻辑来决定是否要执行某些操作…例如,是否满足某些条件以显示本地通知

编辑

对于那些有相同问题的人来说,简单的回答是,iOS上没有这样的问题

唯一的解决办法是使用远程推送通知(静默通知)来唤醒应用程序,然后您就可以实现您的业务逻辑。

*重要提示

从我在一些地方发现的情况来看,人们抱怨使用静默通知来执行此操作,因为应用程序商店可能会拒绝您的应用程序


如果有人在app store上使用此方法进行应用,请分享您的经验。

没有

正如评论中已经指出的,我们非常清楚:

始终避免做任何背景工作,除非这样做可以改善整体用户体验。应用程序可能会移动到后台,因为用户启动了其他应用程序,或者因为用户锁定了设备,并且当前未使用该设备。在这两种情况下,用户都表示您的应用程序现在不需要做任何有意义的工作

除以下例外情况外:

对于需要更多执行时间才能执行的任务,您必须请求特定的权限,以便在后台运行这些任务,而不会挂起它们。在iOS中,仅允许特定应用类型在后台运行:

  • 在后台向用户播放音频内容的应用程序,如音乐播放器应用程序

  • 在后台录制音频内容的应用程序

  • 随时通知用户其位置的应用程序,如导航应用程序

  • 支持互联网语音协议(VoIP)的应用程序

  • 需要定期下载和处理新内容的应用程序

  • 从外部附件接收定期更新的应用程序


没有确切的等价物。请阅读:

有关部分:

对于需要更多执行时间才能执行的任务,您必须请求特定的权限,以便在后台运行这些任务,而不会挂起它们。在iOS中,仅允许特定应用类型在后台运行:

  • 在后台向用户播放音频内容的应用程序,如音乐播放器应用程序
  • 在后台录制音频内容的应用程序
  • 随时通知用户其位置的应用程序,如导航应用程序
  • 支持互联网语音协议(VoIP)的应用程序
  • 需要定期下载和处理新内容的应用程序
  • 从外部附件接收定期更新的应用程序
实现这些服务的应用程序必须声明它们支持的服务,并使用系统框架实现这些服务的相关方面。声明服务可以让系统知道您使用了哪些服务,但在某些情况下,实际上是系统框架阻止了应用程序挂起


如果您试图调用的函数执行上述任一操作,文档将说明如何使用后台任务或其他方法来完成此操作。

您需要运行什么函数?它是计时器、if语句还是位置?查询?iOS应用程序有后台服务。请重新考虑您的逻辑,这样您就不需要在后台执行此操作。您使用的标记不适用于此问题。请查看@Smokedepender,我无法重新思考我的逻辑,因为这是我在应用程序中需要的。正如@Smokedepender所述,iOS不允许你在后台运行像Android这样的活动进程。您需要找到一种不同的方法。那么这一部分如何:“……除非这样做可以改善整体用户体验。”因此,如果您有一些自动化流程可以帮助用户代表用户做一些事情,并在用户确实需要通知时通知用户,他们会阻止这样做,但您仍然可以实现推送通知(例如,Skype消息或其他内容)。好的,那么如果没有合适的方法将AlarmManager转换为iOS,那么有什么替代方法可以实现尽可能多的类似行为呢?我想,对于我的编辑,没有更多的话要说了。无法在后台可靠地运行长时间运行的任务。甚至推送通知(在服务器上计时并发送推送事件)也不能及时可靠地发送到设备。