Background Fetch
Background Fetch 是在 iOS7 加入的新功能。開啓 Background Fetch 的 App 會被系統在合適的時機通知、執行相關的功能。
舉例來說:每天早上 10 點你打開 RSS 閱讀器 App 來閱讀,系統可能會在 10 點之前執行 App 內下載 RSS 的功能,所以一打開 App 的時候就可以顯示出最新的內容。
實現 Background Fetch 的步驟也是非常簡單:
Step #1
Project -> Capabilities -> 開啟 Background Modes -> 勾選 Background Fetch
Step #2
在 application:didFinishLaunchingWithOptions: 內設定 fetch interval
設定 fetch interval 是告知系統我們需要的 fetch 間隔不會小於這個值,但是系統不保證每隔這個時間間隔都會通知。
這裡設置 UIApplicationBackgroundFetchIntervalMinimum 的意思是告訴系統 盡可能呼叫我們的 Fetch 功能。
Get Hill Hung’s stories in your inbox
Join Medium for free to get updates from this writer.
Step #3
實作 Fetch 功能,在 ApplicationDelegate 加入:
completionHandlerblock 可以用的參數有下面三個:
- UIBackgroundFetchResultNewData >>表示資料拉取 OK
- UIBackgroundFetchResultNoData >>沒有新的資料
- UIBackgroundFetchResultFailed >>拉取資料失敗或者逾時
每次執行 Background Fetch 時都會被呼叫到這個函式,可以在這做資料抓取、更新等。執行完之後都必須呼叫 completionHandlerblock,告知系統已經執行完畢。apple 的文件也有提到系統會用根據所花的時間來估算這次 fetch 的電量和資料的傳輸量。如果耗時比較長,未來被呼叫到的機會就會減少。
另外要注意的是當這個函式被呼叫到時,App 有 30秒 的時間來執行相關操作,然後結束時呼叫 completionHandlerblock。如果超過 30 秒的話,App 可能會被系統停掉。








