后台应用程序(位置为UIBackgroundModes)是否可以使用计时器每隔几个小时轮询一次服务器?

时间:2011-12-16 17:37:01

标签: ios

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

我希望我的应用每隔几个小时或几个小时另外联系一个服务器,看看是否有新的数据(因为使用苹果通知推送会通知用户,这是不可取的)。

轮询是我永远不会在任何其他操作系统上使用的东西,但对于iOS,如果您希望尝试实现某些功能,它们不会给您太多选择。 如果轮询间隔非常长,例如轮询之间的几个或几个小时,并且轮询活动本身只持续几秒钟,那么关于它耗尽电池寿命的通常的下意识反应就会大大减少。

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

2 个答案:

答案 0 :(得分:1)

如果只是为了检查新内容,而不是真正时间敏感,你可以使用significantChanges背景定位方法...但是如果用户保持相当不动,那么很少/永远不会开火。我可能还会在applicationWillEnterForeground中添加更新检查以更加确定

答案 1 :(得分:0)

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