Add background app refresh.
This commit is contained in:
parent
bf1f02d084
commit
2a839a3b92
|
@ -24,6 +24,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
||||||
var feedIconDownloader: FeedIconDownloader!
|
var feedIconDownloader: FeedIconDownloader!
|
||||||
|
|
||||||
private let log = Log()
|
private let log = Log()
|
||||||
|
private var didDownloadArticles = false
|
||||||
|
|
||||||
var unreadCount = 0 {
|
var unreadCount = 0 {
|
||||||
didSet {
|
didSet {
|
||||||
|
@ -87,7 +88,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Remove this testing code...
|
||||||
|
// AppDefaults.refreshInterval = RefreshInterval.every10Minutes
|
||||||
|
UIApplication.shared.setMinimumBackgroundFetchInterval(AppDefaults.refreshInterval.inSeconds())
|
||||||
|
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(accountDidDownloadArticles(_:)), name: .AccountDidDownloadArticles, object: nil)
|
||||||
|
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -133,6 +141,21 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
||||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
|
||||||
|
|
||||||
|
AccountManager.shared.refreshAll()
|
||||||
|
while (!AccountManager.shared.combinedRefreshProgress.isComplete) {
|
||||||
|
sleep(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if didDownloadArticles {
|
||||||
|
completionHandler(.newData)
|
||||||
|
} else {
|
||||||
|
completionHandler(.noData)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Split view
|
// MARK: - Split view
|
||||||
|
|
||||||
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool {
|
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool {
|
||||||
|
@ -152,7 +175,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
|
||||||
unreadCount = AccountManager.shared.unreadCount
|
unreadCount = AccountManager.shared.unreadCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func userDefaultsDidChange(_ note: Notification) {
|
||||||
|
UIApplication.shared.setMinimumBackgroundFetchInterval(AppDefaults.refreshInterval.inSeconds())
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func accountDidDownloadArticles(_ note: Notification) {
|
||||||
|
didDownloadArticles = true
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - API
|
// MARK: - API
|
||||||
|
|
||||||
func logMessage(_ message: String, type: LogItem.ItemType) {
|
func logMessage(_ message: String, type: LogItem.ItemType) {
|
||||||
|
|
Loading…
Reference in New Issue