Core Motion फ्रेमवर्क Apple उपकरणों पर एक्सेलेरोमीटर, जायरोस्कोप, मैग्नेटोमीटर और पेडोमीटर डेटा तक पहुँच प्रदान करने वाला iOS का एक सिस्टम घटक है। Apple Developer Documentation, 2025 के अनुसार, फ्रेमवर्क सेंसर के कच्चे डेटा को संसाधित करता है और उन्हें समझने योग्य मीट्रिक्स — त्वरण, कोणीय वेग, ओरिएंटेशन और कदमों की संख्या में परिवर्तित करता है। सभी गति सेंसर के लिए एक एकल API डेवलपर्स को पेडोमीटर, फिटनेस ऐप और डिवाइस झुकाव नियंत्रण वाले गेम बनाने की अनुमति देता है।
मुख्य बिंदु
Core Motion Apple का एक सिस्टम फ्रेमवर्क है, जो iOS 4 में डिवाइस के गति सेंसर के साथ काम करने के लिए पेश किया गया था। यह एक्सेलेरोमीटर, जायरोस्कोप, मैग्नेटोमीटर और पेडोमीटर तक पहुँच के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है, जिससे डेवलपर को निम्न स्तर पर हार्डवेयर ड्राइवरों के साथ काम करने की आवश्यकता नहीं रहती।
Core Motion का मुख्य लाभ डेटा का हार्डवेयर निस्पंदन है। फ्रेमवर्क स्वचालित रूप से एक्सेलेरोमीटर और जायरोस्कोप की रीडिंग को मिलाकर गुरुत्वाकर्षण घटक के बिना शुद्ध userAcceleration की गणना करता है, और क्वाटरनियन और यूलर कोणों के रूप में अंतरिक्ष में डिवाइस की ओरिएंटेशन भी प्रदान करता है।
Apple WWDC 2023 के अनुसार, Core Motion का उपयोग App Store में 80% से अधिक फिटनेस ऐप में किया जाता है। फ्रेमवर्क ऊर्जा खपत के लिए अनुकूलित है — सेंसर पोलिंग आवृत्ति स्वचालित रूप से कम हो जाती है जब कोई सब्सक्राइबर नहीं होता, जिससे डिवाइस की बैटरी लाइफ बढ़ जाती है।
एक महत्वपूर्ण आर्किटेक्चरल विशेषता M-सीरीज़ कोप्रोसेसर (Motion coprocessor) का उपयोग है, जो मुख्य A-सीरीज़ प्रोसेसर से स्वतंत्र रूप से गति सेंसर डेटा को संसाधित करता है। M7 चिप (iPhone 5S) से शुरू होकर, कोप्रोसेसर लगातार एक्सेलेरोमीटर और जायरोस्कोप डेटा एकत्र करता है, जिससे CMPedometer और CMAltimeter 1 mW से कम खपत के साथ लॉक स्क्रीन पर बैकग्राउंड में काम कर सकते हैं। यह हार्डवेयर अलगाव की बदौलत संभव हुआ: कोप्रोसेसर के पास मुख्य सिस्टम से स्वतंत्र अपनी स्वयं की नॉन-वोलाटाइल मेमोरी और डेटा बस है।
Core Motion आर्किटेक्चर CMMotionManager के माध्यम से सिंगलटन मॉडल पर बनाया गया है। एप्लिकेशन मैनेजर का एक एकल इंस्टेंस प्राप्त करता है और उसके माध्यम से अपडेट आवृत्ति कॉन्फ़िगर करता है, प्रत्येक सेंसर प्रकार के लिए डेटा संग्रह शुरू या बंद करता है। डेटा निर्दिष्ट अंतराल पर क्लोज़र ब्लॉक के माध्यम से आता है।
फ्रेमवर्क डेटा प्राप्त करने के दो मोड का उपयोग करता है: पुल (startAccelerometerUpdates के माध्यम से सक्रिय पोलिंग) और पुश (startAccelerometerUpdatesToQueue के माध्यम से निष्क्रिय प्राप्ति)। पुश मोड UI एप्लिकेशन के लिए बेहतर है क्योंकि डेटा मुख्य थ्रेड को ब्लॉक किए बिना निर्दिष्ट कतार में वितरित किया जाता है।
import CoreMotion
let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.1
guard motionManager
.isAccelerometerAvailable else { return }
motionManager.startAccelerometerUpdates(
to: OperationQueue.current()!
) { data, _ in
guard let accel = data?.acceleration else { return }
print("X: \(accel.x), Y: \(accel.y), Z: \(accel.z)")
}
Core Motion चार श्रेणियों के सेंसर तक पहुँच प्रदान करता है: एक्सेलेरोमीटर तीन अक्षों पर रैखिक त्वरण मापता है, जायरोस्कोप कोणीय घूर्णन वेग मापता है, और मैग्नेटोमीटर कंपास के लिए चुंबकीय क्षेत्र की ताकत मापता है। चौथी श्रेणी संयुक्त CMDeviceMotion डेटा है, जिसमें सभी सेंसर से फ़िल्टर की गई रीडिंग शामिल होती है।
CMDeviceMotion डेवलपमेंट के लिए सबसे मूल्यवान क्लास है। यह userAcceleration (गुरुत्वाकर्षण के बिना त्वरण), rotationRate (घूर्णन गति), magneticField (चुंबकीय क्षेत्र वेक्टर) और attitude (क्वाटरनियन या यूलर कोणों के रूप में डिवाइस ओरिएंटेशन) प्रदान करता है। attitude की गणना करने के लिए, Core Motion एक पूरक फ़िल्टर के समान एल्गोरिदम का उपयोग करके जायरोस्कोप और एक्सेलेरोमीटर का सेंसर फ्यूज़न करता है।
मैग्नेटोमीटर का उपयोग जायरोस्कोप ड्रिफ्ट सुधार के लिए किया जाता है। शुद्ध जायरोस्कोप समय के साथ तापमान ड्रिफ्ट और शोर के कारण त्रुटियाँ जमा करता है — मैग्नेटोमीटर और एक्सेलेरोमीटर इस त्रुटि को ठीक करते हैं, स्थिर स्थिति में 1–2 डिग्री तक ओरिएंटेशन सटीकता प्रदान करते हैं।
guard motionManager
.isDeviceMotionAvailable else { return }
motionManager.deviceMotionUpdateInterval = 1.0 // 1 Hz
motionManager.startDeviceMotionUpdates(
using: .xArbitraryZVertical,
to: OperationQueue.current()!
) { motion, _ in
guard let attitude = motion?.attitude else { return }
print("Roll: \(attitude.roll)")
print("Pitch: \(attitude.pitch)")
print("Yaw: \(attitude.yaw)")
}
CMPedometer — कदमों की गणना, तय दूरी और गति की गति के लिए क्लास। यह M-सीरीज़ मोशन कोप्रोसेसर (M7/M8/M9/M10/M11) पर हार्डवेयर प्रोसेसिंग के साथ एक्सेलेरोमीटर डेटा का उपयोग करता है। यह न्यूनतम ऊर्जा खपत के साथ बैकग्राउंड में काम करने की अनुमति देता है — लगातार 8 घंटे की ट्रैकिंग में लगभग 1% बैटरी।
CMAltimeter — iPhone 6 और नए में स्थापित बैरोमीटर के आधार पर सापेक्ष ऊँचाई निर्धारित करने के लिए क्लास। यह लगभग 1 मीटर की सटीकता के साथ शुरुआती बिंदु के सापेक्ष ऊँचाई परिवर्तन दिखाता है। इसका उपयोग फिटनेस ऐप में मंजिलों की गणना और नेविगेशन ऐप में ऊँचाई परिवर्तन निर्धारित करने के लिए किया जाता है।
CMPedometer डेटा वर्तमान रीडिंग के लिए 5 सेकंड से अधिक की देरी के साथ उपलब्ध है। ऐतिहासिक डेटा के लिए, queryPedometerData के माध्यम से 7 दिनों तक का डेटा उपलब्ध है। पेडोमीटर स्वचालित रूप से चलने, दौड़ने और साइकिल चलाने को पहचानता है — ये गतिविधि प्रकार queryPedometerData के माध्यम से प्रकार के अनुसार फ़िल्टरिंग के साथ उपलब्ध हैं।
CMPedometer की सटीकता सामान्य चलने पर लगभग 95% है और दौड़ने पर 90% तक कम हो जाती है। सटीकता प्रभावित होती है: जेब या बैग में फ़ोन की स्थिति, जूते का प्रकार और सतह। Apple खुले में दूरी निर्धारण के लिए Core Location के साथ CMPedometer का उपयोग करने की सलाह देता है — GPS अधिक सटीक दूरी प्रदान करता है जबकि Core Motion कदम गणना संभालता है।
let pedometer = CMPedometer()
guard CMPedometer
.isStepCountingAvailable() else { return }
pedometer.startUpdates(from: Date()) { data, _ in
guard let pedData = pedometerData else { return }
print("कदम: \(pedData.numberOfSteps)")
print("दूरी: \(pedData.distance)")
}
// अल्टीमीटर तक पहुँच
let altimeter = CMAltimeter()
altimeter.startRelativeAltitudeUpdates(
to: OperationQueue.current()!
) { data, _ in
print("ऊँचाई: \(data?.relativeAltitude)")
}
Core Motion के एकीकरण के लिए विशेष अनुमति या एंटाइटलमेंट की आवश्यकता नहीं है — बस फ्रेमवर्क इम्पोर्ट जोड़ें और CMMotionManager इंस्टेंस बनाएँ। हालांकि, iOS 11 से शुरू होने वाले CMPedometer के लिए, CMStepCounter के माध्यम से या सिस्टम अनुमति डायलॉग के साथ CMPedometer का उपयोग करके प्राधिकरण आवश्यक है।
एकीकरण प्रक्रिया में शामिल है: CMMotionManager बनाना, isAccelerometerAvailable / isGyroAvailable / isDeviceMotionAvailable के माध्यम से सेंसर उपलब्धता की जाँच करना, अपडेट अंतराल सेट करना और डेटा संग्रह शुरू करना। जब डेटा की आवश्यकता न हो तो stopAccelerometerUpdates के माध्यम से अपडेट रोकना महत्वपूर्ण है — यह ऊर्जा खपत के लिए महत्वपूर्ण है।
बैकग्राउंड संचालन के लिए, CMPedometer और CMAltimeter को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है — वे मोशन कोप्रोसेसर का उपयोग करते हैं। CMMotionManager के लिए, बैकग्राउंड संचालन उपलब्ध नहीं है — डेटा केवल तब एकत्र किया जाता है जब ऐप सक्रिय और अग्रभूमि में हो। CMPedometer के लिए एकमात्र शर्त यह है कि iOS से बैकग्राउंड अपडेट की सदस्यता शुरू करने के लिए इंस्टॉलेशन के बाद ऐप को कम से कम एक बार उपयोगकर्ता द्वारा लॉन्च किया जाना चाहिए।
Core Motion अनुकूली पोलिंग आवृत्ति का समर्थन करता है: यदि ऐप को रीयल-टाइम डेटा की आवश्यकता नहीं है, तो 100 Hz के बजाय 1–5 Hz का अंतराल सेट करना पर्याप्त है। फिटनेस ऐप के लिए, CMMotionManager के लिए 10 Hz और CMPedometer के लिए 1 Hz इष्टतम आवृत्ति है। Apple सही संचालन के लिए आवश्यक न्यूनतम आवृत्ति कम करने की सलाह देता है।
झुकाव नियंत्रण वाले गेम के लिए, सुचारू प्रतिक्रिया सुनिश्चित करने के लिए 60–100 Hz की आवृत्ति आवश्यक है। इस मामले में, एक अलग कतार के साथ startDeviceMotionUpdates का उपयोग करना और डेटा को जितनी जल्दी हो सके संसाधित करना महत्वपूर्ण है। Apple के अनुसार, 60 Hz, 30 Hz की तुलना में लगभग 2 गुना अधिक ऊर्जा खपत करता है।
Core Motion के साथ काम करते समय, डिवाइस संगतता पर विचार करना महत्वपूर्ण है: जायरोस्कोप iPhone 3GS और iPad पहली पीढ़ी पर अनुपस्थित है, मैग्नेटोमीटर बिना सेल्युलर मॉड्यूल वाले सभी iPad पर अनुपस्थित है। सेंसर उपलब्धता की जाँच के लिए CMMotionManager क्लास के स्थिर विधियों isAccelerometerAvailable, isGyroAvailable और isDeviceMotionAvailable का उपयोग किया जाता है। सिम्युलेटर पर, Core Motion परीक्षण डेटा लौटाता है — वास्तविक सेंसर पर डिबगिंग के लिए, एक भौतिक Apple डिवाइस हमेशा आवश्यक होता है।
// फिटनेस ऐप के लिए इष्टतम सेटिंग
motionManager.deviceMotionUpdateInterval = 0.1 // 10 Hz
motionManager.startDeviceMotionUpdates(
to: .main
) { [weak self] motion, error in
guard let self = self,
let motion = motion else { return }
if motion.userAcceleration.magnitude() > 2.0 {
self.detectedSignificantMovement()
}
}
अक्सर पूछे जाने वाले प्रश्न
हाँ, Core Motion आवश्यक सेंसर वाले सभी Apple उपकरणों पर काम करता है। एक्सेलेरोमीटर सभी iPhone, iPad और iPod touch पर उपलब्ध है। जायरोस्कोप सभी iPhone 4 और नए, iPad 2 और नए पर उपलब्ध है। मैग्नेटोमीटर केवल iPhone पर उपलब्ध है, iPad पर नहीं। बैरोमीटर iPhone 6 और नए पर उपलब्ध है।
बैटरी पर प्रभाव पोलिंग आवृत्ति पर निर्भर करता है। 100 Hz पर, Core Motion प्रति घंटे लगभग 5–7% बैटरी खपत करता है। 10 Hz पर — लगभग 1–2% प्रति घंटे। मोशन कोप्रोसेसर पर CMPedometer 8 घंटे के संचालन में 1% से कम खपत करता है। Apple हमेशा डेटा की आवश्यकता न होने पर अपडेट रोकने की सलाह देता है।
हाँ, CMPedometer एक्सेलेरोमीटर के कच्चे डेटा को संसाधित किए बिना पेडोमीटर के लिए तैयार समाधान प्रदान करता है। क्लास स्वचालित रूप से चलने पर लगभग 95% और दौड़ने पर 90% सटीकता के साथ कदमों को पहचानता है। कस्टम स्टेप डिटेक्टर के लिए, आप अपने स्वयं के एल्गोरिदम के साथ CMMotionManager का उपयोग कर सकते हैं।
Core Motion सिस्टम स्तर पर iOS में एकीकृत है और कम-ऊर्जा प्रसंस्करण के लिए M-सीरीज़ कोप्रोसेसर का उपयोग करता है। Android हार्डवेयर ड्राइवरों तक सीधी पहुँच के साथ SensorManager का उपयोग करता है लेकिन इसमें विशेष कोप्रोसेसर नहीं है, जो बैकग्राउंड ट्रैकिंग के दौरान ऊर्जा खपत बढ़ाता है।
iOS 11 और नए पर CMPedometer के लिए उपयोगकर्ता की अनुमति आवश्यक है। अनुरोध CMPedometer बनाते समय स्वचालित रूप से किया जाता है और सिस्टम डायलॉग ट्रिगर करता है। Info.plist में, आपको NSMotionUsageDescription कुंजी जोड़नी होगी जिसमें बताया जाए कि ऐप को गति डेटा तक पहुँच की आवश्यकता क्यों है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें