2016-04-21 82 views
5

应用程序配置为在后台接收位置更新以保持应用程序处于活动状态,并且在应用程序处于后台时成功接收更新。如何在应用程序处于后台时接收达尔文通知

达尔文通知也已配置,并且只有当应用程序是前台的当前应用程序时才会收到通知。只要应用程序放在后台,它就会停止接收达尔文通知。

有关如何在应用程序处于后台时接收达尔文通知的任何想法?

下面的代码片段。

建筑应用中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) 

在视图 - 控制

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

你有没有尝试过启用后台模式'位置更新'并检查委托方法'locationManager:didUpdateLocations:'是否被称为 –

+0

@ Rich16你有没有得到这个工作?如果是这样,它仍然在iOS 10上工作吗? – simonthumper

回答

0

请确保您已激活Background ModesLocation updates能力。

Location updates capability

这将使您的应用程序接收在后台位置的变化,并与你的逻辑进行。 这种功能的伟大库是INTULocationManager