Я пишу приложение в Swift, где я внедрил singleton class обработку данных с помощью Moscapsule.Как вызвать completeHandler из класса Singleton?
Когда я сообщаю мое приложение, что есть новые данные с content-available: 1
правой функция вызывается, где я в настоящее время только делаю
let mqtt = MQTTManager.Instance
completionHandler(UIBackgroundFetchResult.NewData)
Менеджер создает соединение по инициализации и в onMessageCallback затем работает с новым данные.
Если приложение запустилось недавно, оно находится в фоновом режиме, а одноэлементный класс поддерживает сетевое соединение, это работает. Но это неправильный путь.
Я очень новичок в разработке iOS и Swift, как я могу подождать максимальное количество времени? Когда данные поступают, я могу отправить UIBackgroundFetchResult.NewData, если ничего не произойдет, я могу отправить UIBackgroundFetchResult.Failed.
Моя первая идея заключалась в том, чтобы написать цикл, проверяющий переменную из этого класса, если новое сообщение появилось за каждые 500 мс, и если да, вызовите метод завершенияHandler. Но мне это не кажется правильным, и что бы вы сделали?
EDIT 2015/02/18: Heres код из моего AppDelegate.swift, который запускается на выполнение после того, как приложение получает беззвучный толчок уведомление:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
log.debug("Got remote notification: \(userInfo)")
log.debug("Setting up MQTT client...")
let mqtt = MQTTManager.sharedInstance
completionHandler(UIBackgroundFetchResult.NewData)
}
Нет, на самом деле это 'didReceiveRemoteNotification' с' fetchCompletionHandler', но я думаю, что это не так важно. Проблема заключается в том, что внутри onMessageCallback xcode не знает, что такое completeHandler («Использовать неразрешенный идентификатор», если быть точным). – meilon