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 کے انضمام کے لیے خصوصی اجازت یا entitlement کی ضرورت نہیں ہے — بس فریم ورک امپورٹ شامل کریں اور 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں