如何在应用程序处于后台时接收Darwin通知

时间:2016-04-21 00:24:54

标签: ios notifications swift2 darwin cfnotification

应用程序配置为在后台接收位置更新,以便在应用程序处于后台时保持应用程序处于活动状态并成功接收更新。

Darwin通知也已配置,仅在应用程序是前台中的当前应用程序时才会收到。一旦应用程序被置于后台,它就会停止接收达尔文通知。

有关如何在应用程序处于后台时收到Darwin通知的任何想法?

以下代码段。

在Swift2中构建应用程序

在appdeligate中

    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)
在viewcontroller中

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

1 个答案:

答案 0 :(得分:0)

确保您已激活Location updates中的Background Modes功能。

Location updates capability

这将允许您的应用在后台接收位置更改并继续您的逻辑。 这种功能的一个很棒的库是INTULocationManager