Significant Location Change — ما هو، المحفزات وآلية العمل

المؤلف: IT Sectr نُشر: 2026-03-28 وقت القراءة: 10 دق

«Significant Location Change (SLC)» هو خدمة iOS لمراقبة التنقلات الكبيرة للجهاز، وهي تُخطر التطبيق فقط عند وقوع تغيرات كبيرة في الإحداثيات الجغرافية. وخلافًا لتتبع GPS الفوري، تستخدم SLC أبراج الخلايا المحمولة لتحديد الموقع، مما يضمن استهلاكاً أدنى للطاقة. وفقًا لوثائق Apple Developer, 2025، يسمح Significant Location Change للتطبيق باستقبال تحديثات الموقع الجغرافي دون تشغيل GPS مستمر، مما يوفر تصل إلى 90% من شحن البطارية مقارنة بالتتبع المستمر.

النقاط الرئيسية

  • SLC — مراقبة التغيرات الكبيرة في الموقع باستناد إلى أبراج الخلايا المحمولة
  • استهلاك الطاقة — توفير تصل إلى 90% من البطارية مقارنة بتتبع GPS المستمر
  • المحفزات — تغيير برج الخلايا، عبور حدود المجموعات، تفعيل GPS
  • القيود — المسافة الدنيا للتحديث ~500 متر، الدقة تصل إلى كيلومتر
  • iOS 13+ — إضافة إذن «دائما» وقيود على التشغيل خلفية

ما هو Significant Location Change

Significant Location Change (SLC) هو خدمة موقع جغرافي موفرة للطاقة من iOS مضمنة في إطار Core Location. وهي مصممة للتطبيقات التي تحتاج إلى تتبع التنقلات الكبيرة للمستخدم دون استخدام وحدة GPS بشكل مستمر. تنشط SLC تلقائيًا عند التبديل بين أبراج الخلايا وتخطر التطبيق عبر المفوض به CLLocationManagerDelegate بطريقة didUpdateLocations.

وخلافًا لتتبع مستوى GPS (القياسي startUpdatingLocation)، لا تتطلب SLC نشاطًا مستمرًا للمعالج أو شريحة GPS. تستخدم iOS إشارات أبراج الخلايا لتحديد الموقع التقريبي وتُطلق التطبيق فقط عند اكتشاف فرق كبير في الإحداثيات. يتيح هذا للتطبيق أن «ينام» بين التحديثات، مستهلكًا حدودًا أدنى من الطاقة.

SLC متاحة على جميع الأجهزة المزودة بوحدة خلوية، بدءًا من iOS 5. في iPod Touch وiPad Wi-Fi Only، لا تتوفر الخدمة لأنها تستخدم أبراج الخلايا لتحديد الإحداثيات. Core Location تقرر تلقائيًا أي الأحداث تعتبر كبيرة — لا يمكن للمطور تكوين حساسية SLC أو تحديد مسافة دنيا للمحفز.

لأي التطبيقات تناسب SLC

SLC مثالية للتطبيقات التي لا تتطلب دقة عالية في الموقع الجغرافي: متتبعات الطقس، خدمات التوصيل، تطبيقات البحث عن الأماكن القريبة وتحليل الأماكن الزارة. كما تستخدم iOS خدمة SLC لتفعيل السياجة الجغرافية (Geofencing) في وضع توفير الطاقة. تتطلب تطبيقات الملاحة تتبع GPS أكثر دقة.

كيف يعمل Significant Location Change

Significant Location Change يعمل عن طريق تحليل معرفات أبراج الخلايا (Cell ID) التي يتلقاها الجهاز عند الاتصال بالشبكة. تحتفظ iOS بقاعدة بيانات لإحداثيات الأبراج ويمكنها تحديد الموقع التقريبي دون تشغيل GPS. عندما يتحول الجهاز إلى برج جديد، يقارن النظام الموقع الجديد والسابق وإذا كان الفرق كبيرًا، يُطلق التطبيق لمعالجة الحدث.

يستخدم النظام نهج المجموعات: يتم تقسيم المساحة الجغرافية إلى مجموعات ذات نصف قطر محدد. تقوم SLC بتوليد حدث فقط عند عبور حد المجموعة، وليس مع كل حركة صغيرة داخلها. هذا يمنع استدعاءات التطبيق المتتالية عند التنقل داخل نفس منطقة التغطية (على سبيل المثال، داخل مبنى أو حي). تتراوح دقة SLC من 500 متر إلى عدة كيلومترات حسب كثافة أبراج الخلايا.

عندما تكتشف iOS تغييرًا كبيرًا، تُيقظ التطبيق من الحالة خلفية (إذا لم يكن قيد التشغيل) وتُمرر الحدث إلى مفوض Core Location. يتلقى التطبيق وقتًا قصيرًا للمعالجة (حوالي 10–30 ثانية من الوقت خلفي) — كافٍ لمعالجة الإحداثيات و، عند الضرورة، جدولة تحديث أكثر دقة عبر GPS.

تشغيل التطبيق من الخلفية

SLC لها امتياز إيقاظ التطبيق من الحالة الموقفة أو خلفية. إذا كان التطبيق قد أنهي بواسطة النظام بسبب ضغط الذاكرة، ستقوم SLC بإعادة تشغيله (إعادة الإطلاق) في الخلفية. للقيام بذلك، يجب على التطبيق الاشتراك في UIApplication.LaunchOptionsKey.location في طريقة didFinishLaunchingWithOptions. بعد معالجة الحدث، قد يعيد النظام التطبيق إلى الحالة الموقفة.

محفزات Significant Location Change

تتحدد محفزات SLC حصريًا بواسطة نظام iOS — لا يمكن للمطور التأثير برمجيًا على أي تغييرات في الإحداثيات تعتبر كبيرة. ومع ذلك، توجد سيناريوهات موثقة فيها تقوم SLC بتوليد حدث بضمان. فهم هذه المحفزات يساعد المطور على تصميم سلوك صحيح للتطبيق.

تغيير برج الخلايا

تغيير برج الخلايا هو المحفز الرئيسي لـ SLC. عندما يتحول الجهاز بين أبراج الخلايا (عند التنقل عبر المدينة أو الطريق)، يتحقق النظام من ما إذا كانت الإحداثيات قد تغيرت بشكل كافٍ بين البرج القديم والجديد. إذا كان كذلك، يتم توليد حدث. في المناطق الحضرية ذات شبكة أبراج كثيفة، قد تنشط SLC كل 1–3 كيلومترات.

تفعيل GPS بواسطة التطبيقات الأخرى

إذا قام أي تطبيق آخر أو خدمة نظام (على سبيل المثال، ابحث عن iPhone أو الملاحة) بتفعيل وحدة GPS، فقد تتلقى SLC أيضًا تحديثًا دقيقًا للإحداثيات. هذا هو تأثير جانبي: يحدد GPS الموقع الدقيق، وتنقله iOS إلى جميع التطبيقات المشتركة في SLC. ومع ذلك، لا يوصى بالاعتماد على هذا المحفز — فهو غير مضمون.

تبديل شبكة Wi-Fi

على الرغم من أن SLC لا تستخدم Wi-Fi بشكل مباشر، فإن تبديل شبكة Wi-Fi قد يتسبب في حدث بشكل غير مباشر إذا تلقى الجهاز إحداثيات جديدة عبر خدمة تحديد الموقع من Apple (الموقع القائم على قاعدات بيانات Wi-Fi). تقوم iOS بتجزيئة إحداثيات نقاط الوصول Wi-Fi وتستخدمها لتحسين الموقع بين تبديلات الأبراج.

المحفزالضمانالزمن المنقضيالدقة
تغيير برج الخليةعالي1–30 ثانية500 م – 3 كم
GPS من تطبيقات أخرىمنخفضفوريتصل إلى 10 م
تغيير Wi-Fiمتوسطتصل إلى 5 دقائق100–500 م

SLC مقارنة بخدمات الموقع الأخرى في iOS

توفر iOS عدة آليات للحصول على الموقع الجغرافي، كل منها له دقته واستهلاكه للطاقة وحالات استخدامه. Significant Location Change تحتل مكانًا بين التقريب التقريبي بواسطة الأبراج وتتبع GPS الدقيق، مقدمة توازنًا أمثلًا للتطبيقات التي لا تحتاج دقة عالية بالضرورة.

خدمة الموقع القياسية

تستخدم خدمة الموقع القياسية (startUpdatingLocation()) كلٍا من GPS وWi-Fi وأبراج الخلايا للحصول على أقصى دقة في تحديد الإحداثيات. الدقة تصل إلى 10 أمتار، لكن استهلاك الطاقة مرتفع — وحدة GPS نشطة بشكل مستمر. مناسبة للملاحة ومتتبعات اللياقة البدنية وتطبيقات الواقع المعزز. بالمقابل، إن SLC لا تستخدم GPS بشكل مستمر ودقتها 500 متر أو أقل.

مراقبة المنطقة (السياجة الجغرافية)

تتبع مراقبة المنطقة الدخول والخروج من المناطق الجغرافية المحددة. وخلافًا لـ SLC، فإن المطور يحدد حدود المناطق (نصف قطر من 100 متر). تستخدم السياجة الجغرافية SLC كآلية مساعدة — يحدد النظام أولًا الموقع التقريبي عبر SLC، ثم ينشط GPS للكشف الدقيق عن الدخول/الخروج. العدد الأقصى للمناطق المراقبة هو 20.

مراقبة الزيارات

مراقبة الزيارات هي خدمة متخصصة من iOS 8+ تتبع زيارات الأماكن (الوصول والمغادرة). تستخدم مزيجًا من SLC وإشارات أخرى لتحديد وقت توقف المستخدم في مكان ما ووقت مغادرته. إن مراقبة الزيارات أكثر كفاءة في استهلاك الطاقة من SLC، حيث أنها تولد عددًا أقل من الأحداث وتستخدم التعلم الآلي على الجهاز.

الخدمةالدقةاستهلاك الطاقةالخلفية
SLC500 م – 3 كممنخفض جدًانعم
GPS القياسيتصل إلى 10 ممرتفعيتطلب إذنًا
السياجة الجغرافيةمن 100 ممنخفضنعم
مراقبة الزياراتتصل إلى 100 ممنخفض جدًانعم

استهلاك الطاقة والبطارية

SLC هي أكثر طريقة موفرة للطاقة للحصول على الموقع الجغرافي في iOS، باستثناء مراقبة الزيارات. وفقًا لبيانات Apple، تستهلك SLC تقريبًا 0,1–0,5% من شحن البطارية في الساعة في سيناريو استخدام نموذجي، بينما يمكن لتتبع GPS المستمر أن يستهلك 5–10% في الساعة. يتحقق التوفير لأن وحدة GPS تُنشط فقط لفترة قصيرة للتحقق من الإحداثيات في كل حدث.

تدير iOS استهلاك طاقة SLC من خلال تحسين البطارية. إذا لاحظ النظام أن التطبيق يعالج أحداث SLC بكثرة (على سبيل المثال، الجهاز يتنقل في قطار وتولّد تغييرات الأبراج المتكررة العديد من الأحداث)، قد تقلل iOS من تكرار الإشعارات مؤقتًا. هذه آلية تلقائية — لا يمكن للمطور تعطيلها.

مع كل إصدار رئيسي لـ iOS، تشدد Apple سياسات الوصول إلى الموقع الجغرافي في الخلفية. بدءًا من iOS 13، تغير حوار النظام لطلب إذن الموقع في الخلفية: يجب على المستخدم اختيار «دائما» صراحةً بدلًا من «أثناء استخدام التطبيق» فقط. دون إذن «دائما»، لن تعمل SLC عندما يكون التطبيق في الخلفية أو منهيًا بواسطة النظام.

  • SLC — 0,1–0,5% من البطارية في الساعة؛ GPS — 5–10% في الساعة أثناء التشغيل المستمر
  • iOS 13+ — يتطلب إذنًا صريحًا «دائما» لتشغيل SLC في الخلفية
  • التحسين — تقوم iOS تلقائيًا بتقليل تكرار SLC أثناء الحركة النشطة
  • المعالجة الدفعية — يمكن دمج عدة أحداث SLC في إشعار واحد

التنفيذ بلغة Swift

دعنا ننظر إلى تنفيذ كامل لـ Significant Location Change بلغة Swift. يتضمن المثال تكوين CLLocationManager، طلب إذن «دائما»، بدء المراقبة، معالجة الأحداث ودعم إعادة تشغيل التطبيق بعد إنهائه بواسطة النظام. يستخدم الكود Swift الحديث مع async/await لمعالجة الإحداثيات والمهام خلفية عبر BGTaskScheduler.

swift
import CoreLocation
import UIKit

class LocationManager: NSObject, CLLocationManagerDelegate {

    private let manager = CLLocationManager()

    override init() {
        super.init()
        manager.delegate = self
        manager.pausesLocationUpdatesAutomatically = true
        manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
    }

    func requestAlwaysAuthorization() {
        manager.requestAlwaysAuthorization()
    }

    func startSignificantLocationUpdates() {
        manager.startMonitoringSignificantLocationChanges()
    }

    func locationManager(_ manager: CLLocationManager,
                           didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        Task.detached {
            await LocationProcessor.handleLocationUpdate(location)
        }
    }

    func locationManager(_ manager: CLLocationManager,
                           didFailWithError error: Error) {
        Logger.log("SLC error: \(error.localizedDescription)")
    }
}

معالجة إعادة تشغيل التطبيق

إذا كان التطبيق قد أنهي بواسطة النظام، فإن SLC ستُعيد تشغيله تلقائيًا عند وقوع حدث جديد. في AppDelegate، يجب إضافة تحقق من البدء بحدث الموقع عبر UIApplication.LaunchOptionsKey.location. بعد إعادة التشغيل، يجب على التطبيق تهيئة CLLocationManager واستدعاء startMonitoringSignificantLocationChanges() لمتابعة المراقبة.

swift
class AppDelegate: NSObject, UIApplicationDelegate {

    private let manager = LocationManager()

    func application(_ application: UIApplication,
                           didFinishLaunchingWithOptions launchOptions:
                               [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        if launchOptions?.keys.contains(.location) == true {
            Logger.log("App relaunched by SLC event")
        }
        manager.requestAlwaysAuthorization()
        manager.startSignificantLocationUpdates()
        return true
    }
}

أفضل الممارسات

يتطلب الاستخدام الصحيح لـ Significant Location Change توازنًا بين الوظائفية وكفاءة الطاقة. تتحكم Apple بشدة في الوصول إلى الموقع الجغرافي في الخلفية، والتطبيقات التي تسيء استخدام SLC أو تستخدمها دون ضرورة واضحة تخاطر الرفض عند النشر في متجر التطبيقات.

اشرح دائمًا الحاجة إلى SLC

في Info.plist، يجب إضافة نصوص التبرير: NSLocationAlwaysAndWhenInUseUsageDescription و NSLocationWhenInUseUsageDescription. يجب أن يشرح الوصف بوضوح لماذا يحتاج التطبيق إلى الوصول إلى الموقع الجغرافي في الخلفية. تقرأ مراجعة App Review هذه النصوص وقد ترفض التطبيق إذا كان التبرير غير كافٍ أو الصياغة غامضة. مثال: «يستخدم هذا التطبيق SLC لتحديث توقعات الطقس عند تنقلك.»

عالج فقط الأحداث الضرورية

لا تبدأ عمليات مكلفة (موقع GPS، طلبات الشبكة) مع كل حدث SLC. قد تولّد SLC عشرات الأحداث في الساعة عند التنقل بالوسائل. استخدم «التخفيف» (تجنب الارتداد): احفظ وقت آخر تحديث كامل وتخط المعالجة إذا مر أقل من 5–10 دقائق منذ آخر تحديث. سيوفر ذلك البطارية وحركة الشبكة.

الدمج مع BGTaskScheduler

للمعالجة المطولة بعد حدث SLC، استخدم BGTaskScheduler. عندما يتلقى التطبيق حدث SLC، يمكنه جدولة مهمة خلفية عبر BGProcessingTaskRequest أو BGAppRefreshTaskRequest. يسمح هذا بتأجيل العمليات المستهلكة للموارد (المزامنة مع الخادم، تحليل المسار) إلى أقرب نافذة تنفيذ خلفية، دون حجب السلسلة الرئيسية لاستجابة SLC.

  • Info.plist — نصوص التبرير الإلزامية للوصول إلى الموقع في الخلفية
  • التخفيف — لا تعالج الأحداث أكثر من مرة واحدة كل 5–10 دقائق
  • BGTaskScheduler — جدول المهام خلفية بعد حدث SLC
  • إذن «دائما» — اطلبه فقط عند الضرورة الحقيقية
  • pausesLocationUpdatesAutomatically — فعّله لإيقاف GPS تلقائيًا

الأسئلة الشائعة

ما هو Significant Location Change في iOS؟

Significant Location Change (SLC) هي خدمة iOS موفرة للطاقة لمراقبة التنقلات الكبيرة للجهاز بناءً على أبراج الخلايا. تستهلك طاقة أقل بنسبة تصل إلى 90% مقارنة بتتبع GPS المستمر وهي مناسبة للتطبيقات التي لا تتطلب دقة عالية في الموقع الجغرافي.

ما هي دقة Significant Location Change؟

تتراوح دقة SLC من 500 متر إلى 3 كيلومترات حسب كثافة أبراج الخلايا. في المناطق الحضرية، الدقة أعلى (أقرب إلى 500 م)، بينما في المناطق الريفية تكون أقل (تصل إلى عدة كيلومترات). SLC ليست مصممة لتحديد الإحداثيات بدقة — إنها مورد للمراقبة التقريبية للتنقلات.

كيف أحصل على إذن «دائما» لـ SLC؟

استدعي CLLocationManager.requestAlwaysAuthorization() بعد إضافة نص NSLocationAlwaysAndWhenInUseUsageDescription إلى Info.plist. بدءًا من iOS 13، يجب على المستخدم اختيار «دائما» صراحة في حوار النظام. دون هذا الإذن، لن تعمل SLC في الخلفية.

هل يمكن SLC إعادة تشغيل تطبيق منهي؟

نعم، يمكن SLC إعادة تشغيل تطبيق إذا كان قد أنهي بواسطة النظام بسبب ضغط الذاكرة. عند التشغيل، تحقق من وجود UIApplication.LaunchOptionsKey.location في طريقة didFinishLaunchingWithOptions واستدعي startMonitoringSignificantLocationChanges() لمتابعة المراقبة.

كيف يختلف SLC عن خدمة الموقع القياسية؟

تستخدم SLC فقط أبراج الخلايا ولا تنشط GPS بشكل مستمر، مما يوفر تصل إلى 90% من البطارية. تتراوح الدقة من 500 م إلى 3 كم. تستخدم خدمة الموقع القياسية GPS وWi-Fi والأبراج، بدقة تصل إلى 10 م، ولكنها تستهلك طاقة أكبر بكثير. SLC مناسبة للمراقبة في الخلفية، وGPS للملاحة.

الخلاصة

  • Significant Location Change — مراقبة موفرة للطاقة للتنقلات الكبيرة على iOS
  • الآلية — تحديد الموقع عبر أبراج الخلايا دون GPS مستمر
  • الدقة — 500 م – 3 كم حسب كثافة البنية التحتية للخلايا
  • المحفزات — تغيير البرج، تفعيل GPS بواسطة تطبيقات أخرى، تغيير Wi-Fi
  • الإذن — iOS 13+ يتطلب إذن «دائما» لتشغيل SLC في الخلفية
  • استهلاك الطاقة — 0,1–0,5% في الساعة مقابل 5–10% للGPS المستمر
  • أفضل الممارسات — التخفيف، BGTaskScheduler للمعالجة المطولة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا