2014-01-05 10 views
5

CMStepCounterを実装する方法の例を誰かに見せてもらえないかと思いました。 (私はドキュメントを見てきましたが、実装方法についてはまだ少し混乱しています)。CMStepCounterの実装方法CoreMotion - M7チップ

私は、ステップが実行されるたびに私のビューでUILabelを更新したいと考えています。私はまた、アプリケーションが閉じられたときにステップを計り続けるようにしたいと考えています。

私はどんなヘルプにもiOSには比較的新しいです!

おかげで、 ライアン

答えて

9

#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 

を次のようにして、しかし、時にはstartStepCountingUpdatesToQueueのブロックがnumberOfStepsを更新遅れるだろう、ということに注意してくださいそれを実装する必要があります。

+0

ありがとう、私は、アプリが閉じられている/携帯電話がロックされているときに取られたステップの量を更新するようではないことに気づいた。これを行う方法はありますか?再度、感謝します。 – Ryan

+1

あなたのアプリのplistファイルに必要な背景モードを指定しましたか? – ldindu

+0

いいえ、私はリストを見つけましたが、どちらを選択するかわかりません:)ありがとう、 – Ryan