2016-04-21 14 views
5

Ứng dụng được định cấu hình để nhận cập nhật vị trí trong khi ở chế độ nền để giữ cho ứng dụng luôn hoạt động và cập nhật đang được nhận thành công khi ứng dụng ở chế độ nền.Cách nhận thông báo Darwin khi ứng dụng ở chế độ nền

Thông báo Darwin cũng đã được định cấu hình và chỉ nhận được khi ứng dụng là ứng dụng hiện tại ở nền trước. Ngay sau khi ứng dụng được đặt ở chế độ nền, nó sẽ ngừng nhận Thông báo Darwin.

Bất kỳ suy nghĩ nào về cách nhận thông báo Darwin trong khi ứng dụng ở chế độ nền?

Đoạn mã bên dưới.

Xây dựng ứng dụng trong Swift2

trong 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) 

trong viewController

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

bạn đã thử bật chế độ nền 'Cập nhật vị trí' và kiểm tra xem phương thức ủy nhiệm' locationManager: didUpdateLocations: 'được gọi là –

+0

@ Rich16 bạn đã từng làm việc này chưa? Và nếu có, nó vẫn hoạt động trên iOS 10? – simonthumper

Trả lời

0

Hãy chắc chắn rằng bạn đã kích hoạt khả năng Location updates trong Background Modes.

Location updates capability

này sẽ cho phép ứng dụng của bạn để nhận những thay đổi vị trí trong nền và tiến hành logic của bạn. Một thư viện tuyệt vời cho loại chức năng này là INTULocationManager.

Các vấn đề liên quan