如果setKeepAliveTimeout方法设置15分钟,VOIP应用程序不能及时唤醒

我开发的应用程序应该每15分钟处理一些数据。 所以我添加了voip标志到plist文件中。 并使用900秒(15分钟)setKeepAliveTimeout。 还添加了处理某些数据的后台任务function。 处理数据最多需要10秒。

问题是,应用程序不及时醒来。 有时12分钟后,有时16分钟后等,但我需要15分钟。

如何解决以下问题?

iOS版本是5.0+

如果是iOS的具体请提供我官方参考苹果的API文件,这里提到。

setKeepAliveTimeout:handler:不是通用的间隔调度程序。 它允许您设置提供的处理程序的调用之间的最大时间间隔。 该function的目的是帮助您保持连接不超时或落后于您的VOIP应用程序标准(例如在线/离开状态)。

所以第一个参数( timeout )告诉iOS在不超过 15分钟的时间内调用你的处理程序。 如果操作系统决定在12分钟内备份一些周期,可能会调用您的处理程序。 或在7分钟,或15。

如果您需要对间隔进行更精细的控制,则应设置较小的超时窗口,并忽略对您不重要的调用。 但是调用仍然会很不规范。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/setKeepAliveTimeout:handler

总的来说,目前还没有办法让它按照精确的时间表来唤醒你的应用程序。 您必须遵守iOS有限的后台处理选项,所有这些选项都旨在为操作系统提供很多便利来pipe理所有进程中的整体优先级和资源需求。