【问题标题】:IOS7 Background Fetch Triggers Too LateIOS7后台获取触发太晚
【发布时间】:2014-05-15 09:00:07
【问题描述】:

我通过将最小背景间隔设置为:

实现了新的 iOS7 后台获取功能:
 [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum]

我还尝试了其他可能性,例如将间隔设置为 1.0f 10.0f。 但是无论我尝试过什么我的应用程序似乎都会触发

 application:(UIApplication *)application performFetchWithCompletionHandler

方法,例如一小时一次或两小时一次,但这对我来说没有意义,因为我希望每 15 分钟更新一次。我可以使用这些后台获取功能的唯一方法是从调试菜单中选择模拟后台获取选项,但是这样只有开发版本才能使用后台获取 但是通过“App Store”安装使用它的人没有这个机会 我应该怎么做才能更频繁地调用“performFetch 方法”(至少每 15 分钟一次或类似的东西)? 谢谢。 -托尔加

【问题讨论】:

  • 首先,每 15 分钟更新一次会很快耗尽电池电量。我需要通知用户使用推送通知会更好吗?其次,如果 iOS 检测到您正在耗尽电池电量,则可能不允许您的应用在后台进行更新。 iOS 将查看用户对您的应用的使用情况以及您的应用的电池消耗情况。因此,如果您将其设置为每 15 分钟一次,这不会让 iOS 调用 performFetchWithCompletionHandler:,它只是告诉 iOS 您希望它每 15 分钟一次,但是否允许这样做取决于 iOS。

标签: ios objective-c ios7 background fetch


【解决方案1】:

在此处引用 Apple 文档,


minimumBackgroundFetchInterval


在启动另一个后台提取之前必须经过的最小秒数。 此值仅供参考,并不表示提取操作之间预期的确切时间量。

操作系统决定了应用程序的后台执行窗口,我们对此无能为力。因此,当应用程序获得插槽时,请在 30 秒内执行您想要的任何服务调用。

还有我读到的here

后台获取设置为应用程序工作的频率越高,使用的资源就越多。 iOS 通过对尝试频繁使用 API 的应用程序施加限制来保护自己和设备,因此在设置自定义时间间隔时要小心。使用 iOS 提供的预定义值可能是最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多