后台抓取

Background Fetch是在iOS7中加入的新功能。开启Background Fetch的App会被系统在合适的时机通知,执行相关的功能。
举例来说:每天早上10点你打开RSS阅读器App来阅读,系统可能会在10点之前执行App内下载RSS的功能,所以一打开App的时候可以显示出最新的内容。

实现Background Fetch的步骤也是非常简单:

步骤1
项目->功能->开启后台模式->插入后台获取

第2步
在application:didFinishLaunchingWithOptions:内部设置获取间隔

设定fetch interval是告知系统我们需要的fetch间隔不会小于这个值,但是系统不保证每隔这个时间间隔都会通知。

这里设置UIApplicationBackgroundFetchIntervalMinimum的意思是告诉系统调用呼叫我们的Fetch功能。

第三步
实作Fetch功能,在ApplicationDelegate中加入:

completeHandlerblock可以用的参数有以下三个:

  • UIBackgroundFetchResultNewData >>表示资料拉取OK
  • UIBackgroundFetchResultNoData >>没有新的资料
  • UIBackgroundFetchResultFailed >>拉取资料失败或逾时

每次执行Background Fetch时都会被呼叫到这个函式,可以在这做资料抓取,更新等。执行完之后都必须呼叫完成Handlerblock,告知系统已经执行完毕。如果要耗时比较长,将来被呼叫到的机会就会减少。

另外要注意的是当当这个函式被呼叫到时,App有30秒的的时间来执行相关操作,然后结束时呼叫完成Handlerblock。如果超过30秒的话,App可能会被系统停掉。

参考

  • iOS 7 SDK:多任务增强