CoreLocation Swift: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

CoreLocation क्या है और इसकी ज़रूरत क्यों है?

CoreLocation Apple का बिल्ट-इन फ्रेमवर्क है जो iOS, macOS, watchOS और tvOS प्लेटफॉर्म के लिए है। यह डेवलपर्स को डिवाइस की लोकेशन पता करने के लिए हार्डवेयर और सॉफ्टवेयर तकनीकों तक पहुंच देता है। तीसरे पक्ष की लाइब्रेरीज़ के विपरीत, CoreLocation को CocoaPods या SPM जैसे पैकेज मैनेजर से इंस्टॉल करने की ज़रूरत नहीं है — यह स्टैंडर्ड SDK का हिस्सा है।

इस फ्रेमवर्क की मुख्य क्षमताएं:

  • मौजूदा भौगोलिक निर्देशांक (अक्षांश और देशांतर) पता करना।
  • रीयल-टाइम में लोकेशन बदलाव पर नज़र रखना।
  • जियोफेंसिंग — किसी निर्धारित क्षेत्र में प्रवेश/निकास पर सूचना प्राप्त करना।
  • दिशा (कम्पास) और गति की गणना करना।
  • रिवर्स जियोकोडिंग (निर्देशांक को पते में बदलना) और फॉरवर्ड जियोकोडिंग (पते को निर्देशांक में बदलना)।

यह लाइब्रेरी नेविगेशन ऐप्स, डिलीवरी सर्विस, फिटनेस ट्रैकर्स, जियोटैग वाली सोशल नेटवर्किंग और किसी भी ऐसे ऐप के लिए ज़रूरी है जहां यूज़र की लोकेशन जानना ज़रूरी हो।

CoreLocation की इंस्टॉलेशन

चूंकि CoreLocation ऑपरेटिंग सिस्टम का हिस्सा है, इसे pip या npm से इंस्टॉल करने की ज़रूरत नहीं है। उपयोग के लिए बस कोड में मॉड्यूल को इम्पोर्ट करना होता है।

ज़रूरी: जियोलोकेशन के साथ काम करने के लिए अपने प्रोजेक्ट की Info.plist फ़ाइल में उपयोग का विवरण जोड़ना होगा। ऐसा न करने पर, परमिशन मांगने पर ऐप क्रैश हो जाएगा।

निम्नलिखित में से कोई एक कुंजी जोड़ें (इस पर निर्भर करता है कि आपको लोकेशन कब चाहिए):

  • NSLocationWhenInUseUsageDescription — केवल ऐप के सक्रिय उपयोग के दौरान एक्सेस के लिए।
  • NSLocationAlwaysAndWhenInUseUsageDescription — हमेशा एक्सेस के लिए (बैकग्राउंड में भी)।

वैल्यू के रूप में वह स्ट्रिंग दें जो यूज़र को परमिशन डायलॉग में दिखाई देगी (जैसे, "ऐप को पास के कैफे दिखाने के लिए लोकेशन एक्सेस चाहिए")।

कोड उदाहरण के साथ त्वरित शुरुआत

यूज़र के मौजूदा निर्देशांक प्राप्त करने का एक न्यूनतम उदाहरण देखें।

import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()
    }

    // MARK: - CLLocationManagerDelegate
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        print("अक्षांश: \(location.coordinate.latitude)")
        print("देशांतर: \(location.coordinate.longitude)")
        // बैटरी बचाने के लिए अपडेट रोकें
        locationManager.stopUpdatingLocation()
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("लोकेशन प्राप्त करने में त्रुटि: \(error.localizedDescription)")
    }
}

यह कोड एक मैनेजर बनाता है, यूज़र से परमिशन मांगता है और ट्रैकिंग शुरू करता है। जैसे ही निर्देशांक मिलते हैं, वे कंसोल पर प्रिंट हो जाते हैं।

CoreLocation के मुख्य तरीके/फंक्शन

नीचे CLLocationManager क्लास और सहायक क्लास के मुख्य तरीके और प्रॉपर्टीज़ दी गई हैं।

1. requestWhenInUseAuthorization()

विवरण: यूज़र से केवल ऐप के उपयोग के दौरान जियोलोकेशन एक्सेस की अनुमति मांगता है (जब ऐप स्क्रीन पर एक्टिव हो)।

पैरामीटर: कोई नहीं।

उदाहरण:

let manager = CLLocationManager()
manager.requestWhenInUseAuthorization()

2. requestAlwaysAuthorization()

विवरण: यूज़र से हमेशा जियोलोकेशन एक्सेस की अनुमति मांगता है (बैकग्राउंड में भी)।

पैरामीटर: कोई नहीं।

उदाहरण:

let manager = CLLocationManager()
manager.requestAlwaysAuthorization()

3. startUpdatingLocation()

विवरण: डिवाइस की लोकेशन का लगातार अपडेट शुरू करता है। जब भी नई लोकेशन उपलब्ध होती है, didUpdateLocations डेलिगेट मेथड कॉल होता है।

पैरामीटर: कोई नहीं।

उदाहरण:

locationManager.startUpdatingLocation()

4. stopUpdatingLocation()

विवरण: लोकेशन अपडेट रोकता है। बैटरी बचाने के लिए जब लोकेशन की ज़रूरत न हो तो इसे कॉल करें।

पैरामीटर: कोई नहीं।

उदाहरण:

locationManager.stopUpdatingLocation()

5. startMonitoringSignificantLocationChanges()

विवरण: केवल महत्वपूर्ण लोकेशन बदलावों पर नज़र रखता है (जैसे, सेल टावर बदलना)। यह बैटरी के लिए ज़्यादा कुशल है।

पैरामीटर: कोई नहीं।

उदाहरण:

locationManager.startMonitoringSignificantLocationChanges()

6. locationManager(_:didUpdateLocations:)

विवरण: डेलिगेट मेथड जो नई लोकेशन उपलब्ध होने पर कॉल होता है। locations पैरामीटर में CLLocation ऑब्जेक्ट्स की एक सूची होती है।

पैरामीटर: locations: [CLLocation] — नई लोकेशन की सूची।

उदाहरण:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    if let location = locations.last {
        print("अक्षांश: \(location.coordinate.latitude)")
    }
}

7. locationManager(_:didFailWithError:)

विवरण: डेलिगेट मेथड जो लोकेशन प्राप्त करने में त्रुटि होने पर कॉल होता है।

पैरामीटर: error: Error — त्रुटि का विवरण।

उदाहरण:

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
    print("त्रुटि: \(error.localizedDescription)")
}

8. startMonitoring(for:)

विवरण: एक जियोफेंस (भौगोलिक क्षेत्र) की निगरानी शुरू करता है। जब यूज़र उस क्षेत्र में प्रवेश करता है या छोड़ता है, तो सूचना मिलती है।

पैरामीटर: region: CLRegion — निगरानी करने का क्षेत्र।

उदाहरण:

let region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 28.6139, longitude: 77.2090), radius: 100, identifier: "दिल्ली")
locationManager.startMonitoring(for: region)

9. stopMonitoring(for:)

विवरण: किसी विशिष्ट क्षेत्र की निगरानी रोकता है।

पैरामीटर: region: CLRegion — वह क्षेत्र जिसकी निगरानी रोकनी है।

उदाहरण:

locationManager.stopMonitoring(for: region)

10. locationManager(_:didEnterRegion:)

विवरण: डेलिगेट मेथड जो तब कॉल होता है जब यूज़र किसी निगरानी किए जा रहे क्षेत्र में प्रवेश करता है।

पैरामीटर: region: CLRegion — वह क्षेत्र जिसमें प्रवेश किया गया।

उदाहरण:

func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
    print("क्षेत्र में प्रवेश: \(region.identifier)")
}

11. locationManager(_:didExitRegion:)

विवरण: डेलिगेट मेथड जो तब कॉल होता है जब यूज़र किसी निगरानी किए जा रहे क्षेत्र से बाहर निकलता है।

पैरामीटर: region: CLRegion — वह क्षेत्र जिससे बाहर निकला गया।

उदाहरण:

func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
    print("क्षेत्र से बाहर: \(region.identifier)")
}

12. heading प्रॉपर्टी

विवरण: डिवाइस की वर्तमान दिशा (कम्पास) को डिग्री में दर्शाता है। startUpdatingHeading() को कॉल करने के बाद उपलब्ध होता है।

पैरामीटर: कोई नहीं (प्रॉपर्टी है)।

उदाहरण:

locationManager.startUpdatingHeading()
// बाद में:
if let heading = locationManager.heading {
    print("दिशा: \(heading.trueHeading)°")
}

13. startUpdatingHeading()

विवरण: कम्पास दिशा अपडेट प्राप्त करना शुरू करता है।

पैरामीटर: कोई नहीं।

उदाहरण:

locationManager.startUpdatingHeading()

14. stopUpdatingHeading()

विवरण: कम्पास दिशा अपडेट रोकता है।

पैरामीटर: कोई नहीं।

उदाहरण:

locationManager.stopUpdatingHeading()

15. CLGeocoder क्लास

विवरण: निर्देशांक को पते में बदलने (रिवर्स जियोकोडिंग) और पते को निर्देशांक में बदलने (फॉरवर्ड जियोकोडिंग) के लिए उपयोग किया जाता है।

मुख्य तरीके:

  • reverseGeocodeLocation(_:completionHandler:) — निर्देशांक से पता प्राप्त करें।
  • geocodeAddressString(_:completionHandler:) — पते से निर्देशांक प्राप्त करें।

उदाहरण:

let geocoder = CLGeocoder()
let location = CLLocation(latitude: 28.6139, longitude: 77.2090)
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
    if let placemark = placemarks?.first {
        print("पता: \(placemark.name ?? ""), \(placemark.locality ?? "")")
    }
}

अनुशंसाएँ