安排后台任务

时间:2016-11-02 02:49:01

标签: ios swift xcode swift2.3

我目前正在处理警报应用程序,我正在实施智能警报功能,我必须从服务器获取数据以确定是否是唤醒用户的正确时间。

让我们说,案例是:

  • 闹钟设置为06:30 AM

  • 智能闹钟功能在06:30之前设置为30分钟,数据提取将在上午06:00至06:25之间以5分钟为间隔进行5次

  • 如果,让我们说,在06:15 AM,服务器返回了唤醒用户所需的数据,所有预定的任务将立即取消
  • 当前时间是晚上11:30
  • 在11:30 PM至06:00 AM期间不会执行任何智能警报任务。

1 个答案:

答案 0 :(得分:2)

您可以使用推送通知/无声推送通知来完成此任务。 请注意,用户必须选择加入推送通知才能使用此功能。 以下是如何实现它的概述

  • 每当用户设置闹钟时,都会通过网络服务将此时间发送给服务器。
  • 服务器将向APNS发送推送通知有效负载,并根据设备令牌重定向到应用程序。
  • 一旦设备收到通知有效负载,将调用一个委托。您可以处理此有效负载中与警报相关的数据或调用Web服务调用。
  • 使用beginBackgroundTaskWithExpirationHandler执行5分钟间隔任务。 beginBackgroundTaskWithExpirationHandler请求OS执行任务的额外时间。苹果没有(故意)指明这个额外时间有多长,但实际上大约需要10分钟。

请详细阅读:推送通知,无声推送通知&后台任务处理程序。

后台获取API:在iOS 7中,Apple增加了对后台获取的支持 - 一种智能的,每应用程序的crontab,在机会时间醒来。无法强制后台提取以精确的间隔执行。 iOS会在计划将来的回调时检查在先前后台提取期间使用了多少数据和电池电量。 添加支持包括编辑应用程序的属性列表(请参阅UIBackgroundModes)并在应用程序生命周期的早期设置获取间隔

More Details Here