后台抓取
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:多任务增强