Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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
Ios 后台应用程序(具有位置UIBackgroundMode)能否使用计时器每隔几个小时轮询一次服务器?_Ios - Fatal编程技术网

Ios 后台应用程序(具有位置UIBackgroundMode)能否使用计时器每隔几个小时轮询一次服务器?

Ios 后台应用程序(具有位置UIBackgroundMode)能否使用计时器每隔几个小时轮询一次服务器?,ios,Ios,我有一个带有UIBackgroundMode位置的后台应用程序 我希望我的应用程序每隔几小时或几小时与服务器联系一次,看看是否有新的数据(因为使用apple notification push会通知用户,这是不可取的) 轮询是我在任何其他操作系统上都不会使用的功能,但在iOS上,如果您想尝试实现某些功能,它们不会给您留下太多选择。 如果轮询间隔相当长,如轮询间隔数小时或数小时,且轮询活动本身仅持续数秒,则通常的下意识反应(关于耗尽电池寿命)将大大减少 当应用程序处于后台模式时,是否会触发重复的N

我有一个带有UIBackgroundMode位置的后台应用程序

我希望我的应用程序每隔几小时或几小时与服务器联系一次,看看是否有新的数据(因为使用apple notification push会通知用户,这是不可取的)

轮询是我在任何其他操作系统上都不会使用的功能,但在iOS上,如果您想尝试实现某些功能,它们不会给您留下太多选择。 如果轮询间隔相当长,如轮询间隔数小时或数小时,且轮询活动本身仅持续数秒,则通常的下意识反应(关于耗尽电池寿命)将大大减少


当应用程序处于后台模式时,是否会触发重复的NSTimer?如果没有,是否有其他类型的计时器或机制可用?

否,这是不允许的。您应该查看推送通知并找到服务器端解决方案。

不,这是不允许的。您应该查看推送通知并找到服务器端解决方案。

如果只是为了检查新内容,而不是真正的时间敏感,您可以使用significantChanges后台定位方法……但是如果用户保持相当不动,它很少/永远不会触发。我可能还会添加更新签入应用程序willenterforeground,以更加确定如果只是为了检查新内容,而不是真正的时间敏感,您可以使用significantChanges后台定位方法……但是如果用户保持相当静止,它很少/永远不会触发。我可能还会添加更新签入应用程序willenterforeground,以更加确定

谢谢,但我想在通知用户之前下载一些内容。因此,一旦他们收到通知,内容就准备就绪,可供他们查看,而不是先通知他们,然后将应用程序带到前台,然后等待应用程序与服务器联系并获取数据。但这似乎是不可能的?不是真的,你可以使用applicationWillEnterForeground方法,就像前面提到的Robot Woods那样,在加载视图之前准备数据,但你应该高效地这样做。这可以在不中断打开应用程序的“流程”的情况下完成,如果数据很小并且您的计算没有那么复杂……谢谢,但我想在通知用户之前下载一些内容。因此,一旦他们收到通知,内容就准备就绪,可供他们查看,而不是先通知他们,然后将应用程序带到前台,然后等待应用程序与服务器联系并获取数据。但这似乎是不可能的?不是真的,你可以使用applicationWillEnterForeground方法,就像前面提到的Robot Woods那样,在加载视图之前准备数据,但你应该高效地这样做。如果数据很小,并且你的计算没有那么复杂,那么这可以在不中断打开应用程序的“流程”的情况下完成…