我正在开发应该以特定间隔(30-3600 秒)做一些后台工作的 iOS 应用程序,所以理想情况下我需要为我的应用程序无限后台执行。我正在使用此答案中的“更新 1”解决方案,但存在一个问题。
- 我用来在委托方法
setKeepAliveTimeout:600 handler:
中注册保持活动的处理程序,并且;application: didFinishLaunchingWithOptions:
- 打电话
beginBackgroundTaskWithExpirationHandler:
; - 将应用程序移至后台。一切都很好。计时器正在触发,正在进行中,
backgroundTimeRemaining
说我有大约 600 秒; - 应用程序暂停 600 秒后;
- 几秒钟后,keep-alive 处理程序再次调用并请求后台执行。但这一次
backgroundTimeRemaining
说我只有大约 50 秒; - 50 秒后,应用程序再次暂停;
- ~550 秒暂停;
- 转到 5。
我正在使用最新版本 OS (6.1.3) 的 iPhone 3GS 上测试我的应用程序。所以问题是为什么我在第二次调用后只有大约 50 秒beginBackgroundTaskWithExpirationHandler:
?有没有其他方法可以在 iOS 的后台以短时间间隔(例如 30 秒)进行一些工作?
PS:我正在开发的应用程序是供公司内部使用的,所以我不在乎被苹果拒绝。