CMMotion に関する Apple のドキュメントを読みましたが、加速度計データを NSLog にするために行う必要があるすべてのことは、アプリで行われているようです。ただし、アプリを実行して画面を反転すると、加速度計からデータが返されません。実行時エラーはありません。これが私のコードです:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
ad = [[CMMotionManager alloc] init];
//[ad startDeviceMotionUpdates];
[ad startAccelerometerUpdates];
//Returns Null
NSLog(@"Accelerometer Data %@", ad.accelerometerData);
BOOL accelerometerAvailable = ad.isAccelerometerAvailable?YES:NO;
// Returns false, else statement is logged
if(accelerometerAvailable) {
NSLog(@"I guess it is...");
} else {
NSLog(@"I guess it is not...");
}
[ad startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
NSLog(@"Your accelerometer data is: %@", accelerometerData.acceleration);
}];
}
このコードを時間間隔でデータを返す別のアプリに追加して、データを取得していない理由がviewDidLoadが1回しか呼び出されないためであることを確認しました。私はまだ何も手に入れませんでした。