How Nike+ GPS on iPhone receives accelerometer updates in the background?

For the sake of providing an answer to this question, even though it is already self answered…

“If you use the newer Core Motion API, you can receive updates in the background.”

Here is an example:

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

Leave a Comment