2014-01-05 20 views
5

Ich habe mich gefragt, ob mir jemand ein Beispiel zeigen könnte, wie man CMSstepCounter implementiert. (Ich habe mir die Dokumentation angeschaut, bin aber immer noch etwas verwirrt darüber, wie man das implementiert).So implementieren Sie CMStepCounter CoreMotion - M7 Chip

Ich bin auf der Suche nach einem UILabel auf meiner Ansicht jedes Mal aktualisieren, wenn ein Schritt gemacht wird. Ich möchte auch, dass die App weiterhin Schritte zählt, wenn sie geschlossen ist.

Ich bin relativ neu zu iOS zu jeder Hilfe würde sehr geschätzt :)!

Danke, Ryan

Antwort

9

sollten Sie es implementieren als

#import "ViewController.h" 
#import <CoreMotion/CoreMotion.h> 

@interface ViewController() 

@property (weak, nonatomic) IBOutlet UILabel *stepsCountingLabel; // Connect this outlet to your's label in xib file. 
@property (nonatomic, strong) CMStepCounter *cmStepCounter; 
@property (nonatomic, strong) NSOperationQueue *operationQueue; 

@end 

@implementation ViewController 

- (NSOperationQueue *)operationQueue 
{ 
    if (_operationQueue == nil) 
    { 
     _operationQueue = [NSOperationQueue new]; 
    } 
    return _operationQueue; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if ([CMStepCounter isStepCountingAvailable]) 
    { 
     self.cmStepCounter = [[CMStepCounter alloc] init]; 
     [self.cmStepCounter startStepCountingUpdatesToQueue:self.operationQueue updateOn:1 withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) 
     { 
      [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
       [self updateStepCounterLabelWithStepCounter:numberOfSteps]; 
      }]; 
     }]; 
    } 
} 

- (void)updateStepCounterLabelWithStepCounter:(NSInteger)countedSteps 
{ 
    self.stepsCountingLabel.text = [NSString stringWithFormat:@"%ld", (long)countedSteps]; 
} 

@end 

jedoch, dass folgt beachten Sie, manchmal startStepCountingUpdatesToQueue Blockade wird die Aktualisierung numberOfSteps verzögern.

+0

Danke, mir ist jedoch aufgefallen, dass die App nicht die Anzahl der Schritte aktualisiert, die beim Schließen der App/Telefon gesperrt wurden. Gibt es eine Möglichkeit, dies zu tun? Danke noch einmal. – Ryan

+1

Haben Sie die erforderlichen Hintergrundmodi in der Plist-Datei Ihrer App angegeben? – ldindu

+0

Nein, ich habe eine Liste gefunden, bin mir aber nicht sicher welche zu wählen :) Danke, – Ryan

Verwandte Themen