2012-01-03 23 views
33

Ứng dụng Nike + GPS mới cho iOS 5 có thể xử lý các sự kiện gia tốc trong nền (do đó cho phép theo dõi máy chạy bộ trong nhà). Sao có thể như thế được? Khi tôi đặt ứng dụng của tôi ở chế độ nền, nó sẽ ngừng nhận sự kiện. Tôi sử dụng API UIAccelerometer tiêu chuẩn.Cách Nike + GPS trên iPhone nhận được bản cập nhật gia tốc trong nền?

+0

Xin vui lòng, bất cứ ai khác có thể khẳng định điều đó? Có vẻ tuyệt vời cho Apple – AlexeyVMP

+3

Tôi có thể xác nhận rằng nó hoạt động! Điều duy nhất bạn cần phải đáp ứng - sử dụng bất kỳ chế độ nền nào để làm cho ứng dụng của bạn chạy trong nền (cập nhật vị trí, phát lại, VoIP hoặc trung tâm BT4). – AlexeyVMP

+2

Xin chào các bạn, cảm ơn vì công việc của bạn cho đến nay! Tôi đã thử cách tiếp cận của bạn cho một ứng dụng pedometer. Nó gần như làm việc cho tôi. Tôi sử dụng chế độ nền vị trí và cập nhật vị trí người dùng cứ 9 phút một lần để ngăn ứng dụng không hoạt động - cơ chế này hoạt động nhưng hàng đợi cập nhật không chứa bất kỳ dữ liệu nào sau 9 phút đầu tiên. Bạn có bất kỳ ý tưởng những gì đi sai hoặc có thể bạn có thể cung cấp một chút chi tiết gợi ý/giải pháp cho vấn đề của tôi? Cảm ơn một lần nữa! Hannes – Hannes

Trả lời

12

Vì mục đích cung cấp một câu trả lời cho câu hỏi này, mặc dù nó đã tự trả lời ...

"Nếu bạn sử dụng phiên bản mới hơn lõi chuyển động API, bạn có thể nhận được cập nhật ở chế độ nền."

Dưới đây là một ví dụ:

- (void)startAccelerationCollection { 
    [self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] 
              withHandler:^(CMAccelerometerData *data, NSError *error) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.accelerometerReadings addObject:data]; 
     }); 
    }]; 
} 
+4

Thao tác này không hoạt động sau khi bạn nhấn nút trang chủ. Làm thế nào chúng ta có thể khắc phục điều đó? – Sumoanand

+0

@Sumoanand - Yep. Điều này không hoạt động khi ứng dụng bị tạm ngưng (khi người dùng nhấn nút HOME hoặc chuyển ứng dụng, v.v.) – kamyFC

+0

bất kỳ cập nhật nào về điều này? – Nil

0

Khi khối với bản cập nhật của máy đếm bước đi, tôi gọi là phương pháp để tắt và bật Trên GPS. Đối với tôi, nó đã khắc phục sự cố khi người dùng nhấn vào nhà và ở lại trong một giờ nghe nhạc trên spotify.

Đừng quên bật Cài đặt Project -> Capabilities -> chế độ Background -> Vị trí cập nhật

import CoreLocation 
    import CoreMotion 


    //turn Off and turn On GPS 
    private func apelacaoRenovarGPSLigado() { 

    LocationManager.sharedInstance.stopUpdatingLocation() 
    let locationManager = LocationManager.sharedInstance 
    locationManager.autoUpdate = true 
    locationManager.startUpdatingLocationWithCompletionHandler { (location, status, verboseMessage, error) ->() in 

    } 
} 

private func startPedometer() 
{ 
    if CMPedometer.isDistanceAvailable() 
    { 
     if self.pedometer == nil 
     { 
      self.pedometer = CMPedometer() 
     } 

     self.pedometer!.startPedometerUpdatesFromDate(NSDate()) { (data, error) in 

      dispatch_async(dispatch_get_main_queue(), { 

       print("DISTANCIA PARCIAL \(data!.distance!)") 

       print("DIFERENCA \(data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance))") 
       self.delegate!.trackerDistanceDidChanged((data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance))/1000.0) 
       self.subtotalDistance = data!.distance!.doubleValue 

       self.apelacaoRenovarGPSLigado() 

      }) 

     } 
    } 
    else 
    { 
     self.delegate!.trackerDeviceNotSupported() 
    } 
} 
Các vấn đề liên quan