1

我正在开发应该以特定间隔(30-3600 秒)做一些后台工作的 iOS 应用程序,所以理想情况下我需要为我的应用程序无限后台执行。我正在使用答案中的“更新 1”解决方案,但存在一个问题。

  1. 我用来在委托方法setKeepAliveTimeout:600 handler:中注册保持活动的处理程序,并且;application: didFinishLaunchingWithOptions:
  2. 打电话beginBackgroundTaskWithExpirationHandler:
  3. 将应用程序移至后台。一切都很好。计时器正在触发,正在进行中,backgroundTimeRemaining说我有大约 600 秒;
  4. 应用程序暂停 600 秒后;
  5. 几秒钟后,keep-alive 处理程序再次调用并请求后台执行。但这一次backgroundTimeRemaining说我只有大约 50 秒;
  6. 50 秒后,应用程序再次暂停;
  7. ~550 秒暂停;
  8. 转到 5。

我正在使用最新版本 OS (6.1.3) 的 iPhone 3GS 上测试我的应用程序。所以问题是为什么我在第二次调用后只有大约 50 秒beginBackgroundTaskWithExpirationHandler:?有没有其他方法可以在 iOS 的后台以短时间间隔(例如 30 秒)进行一些工作?

PS:我正在开发的应用程序是供公司内部使用的,所以我不在乎被苹果拒绝。

4

0 回答 0