Core Motion позволяет брать такую информацию: ускорение, направление силы тяжести, положение телефона в пространстве, высота барометрическая, магнитное поле.
Необходимо взять положение телефона в пространстве. Экземпляр класса
CMAttitude
имеет свойство
rotationMatrix
, которое позволяет преобразовать координаты из СК, связанной с телефоном, в СК, связанную с Землей. С помощью нее можно определить ускорение строго вдоль вертикальной оси:
CMRotationMatrix *attitude = motionManager.deviceMotion.attitude.rotationMatrix;
CMAcceleration *acceleration = motionManager.accelerometerData.acceleration;
double ay = attitude.m21*acceleration.x + attitude.m22*acceleration.y + attitude.m23*acceleration.z;
Разумеется, объект
motionManager
должен быть проинициализирован и активирован.
Более подробно читайте в reference по Core Motion