Как получать уведомления Darwin, когда приложение находится в фоновом режиме

Приложение настроено на получение обновлений местоположения в фоновом режиме, чтобы приложение оставалось активным, а обновления были успешно получены, когда приложение находится в фоновом режиме.

Уведомления Darwin также были настроены и получены только тогда, когда приложение является текущим приложением на переднем плане. Как только приложение переводится в фоновый режим, оно перестает получать уведомления Дарвина.

Есть мысли о том, как получать уведомления Дарвина, когда приложение работает в фоновом режиме?

Фрагменты кода ниже.

Создание приложения в Swift2

в приложении

    let callback: @convention(c)
    (CFNotificationCenter!, UnsafeMutablePointer<Void>, CFString!, UnsafePointer<Void>,        CFDictionary!) -> Void = {
        (center, observer, name, object, userInfo) in

    //Execute callback code

    }


    let exCb: CFNotificationCallback = unsafeBitCast(callback, CFNotificationCallback.self)

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),nil ,exCb,"com.apple.springboard.hasBlankedScreen" as CFString,nil ,CFNotificationSuspensionBehavior.DeliverImmediately)

в контроллере просмотра

    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    //locationManager.requestWhenInUseAuthorization()
    locationManager.requestAlwaysAuthorization()
    locationManager.startUpdatingLocation()

person Rich16    schedule 21.04.2016    source источник
comment
Вы пытались включить фоновый режим Location updates и проверить, вызывается ли метод делегата locationManager:didUpdateLocations:   -  person Sunil Sharma    schedule 24.08.2016
comment
@ Rich16 у тебя когда-нибудь это работало? И если да, то работает ли он на iOS 10?   -  person simonthumper    schedule 19.06.2017


Ответы (1)


Убедитесь, что вы активировали возможность Location updates в Background Modes.

Возможность обновления местоположения

Это позволит вашему приложению получать изменения местоположения в фоновом режиме и продолжать свою логику. Отличной библиотекой для такого рода функций является INTULocationManager.

person Kirualex    schedule 23.08.2016