/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
iphone/Maps/Core/BackgroundFetchScheduler/BackgroundFetchTask/BackgroundFetchTask.swift
62 строки
2 KB
Aleksey Belouosv
[iOS] move more files to CoreApi lib
22 окт 2019, 17:48
22 окт 2019, 17:48
2472a59
Код
Авторство
О чём код?
@objc class BackgroundFetchTask: NSObject { var frameworkType: BackgroundFetchTaskFrameworkType { return .none } private var backgroundTaskIdentifier = UIBackgroundTaskIdentifier.invalid private var completionHandler: BackgroundFetchScheduler.FetchResultHandler? func start(completion: @escaping BackgroundFetchScheduler.FetchResultHandler) { completionHandler = completion backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(withName:description, expirationHandler: { self.finish(.failed) }) if backgroundTaskIdentifier != UIBackgroundTaskIdentifier.invalid { fire() } } fileprivate func fire() { finish(.failed) } fileprivate func finish(_ result: UIBackgroundFetchResult) { guard backgroundTaskIdentifier != UIBackgroundTaskIdentifier.invalid else { return } UIApplication.shared.endBackgroundTask(UIBackgroundTaskIdentifier(rawValue: backgroundTaskIdentifier.rawValue)) backgroundTaskIdentifier = UIBackgroundTaskIdentifier.invalid completionHandler?(result) } } @objc(MWMBackgroundStatisticsUpload) final class BackgroundStatisticsUpload: BackgroundFetchTask { override fileprivate func fire() { Alohalytics.forceUpload(self.finish) } override var description: String { return "Statistics upload" } } @objc(MWMBackgroundEditsUpload) final class BackgroundEditsUpload: BackgroundFetchTask { override fileprivate func fire() { MWMEditorHelper.uploadEdits(self.finish) } override var description: String { return "Edits upload" } } @objc(MWMBackgroundUGCUpload) final class BackgroundUGCUpload: BackgroundFetchTask { override var frameworkType: BackgroundFetchTaskFrameworkType { return .full } override fileprivate func fire() { FrameworkHelper.uploadUGC(self.finish) } override var description: String { return "UGC upload" } }