आपके द्वारा उपयोग की जाने वाली स्थान सेवाओं के लिए अनुमति माँगने के लिए:
yourSharedLocationManager.requestWhenInUseAuthorization()
यदि वर्तमान में स्थिति अनिर्धारित है तो एक अलर्ट उपयोगकर्ता को एक्सेस की अनुमति देने के लिए संकेत देगा। यदि एक्सेस से इनकार किया जाता है तो आपके ऐप को CLLocationManagerDelegate में अधिसूचित किया जाएगा, इसी तरह यदि किसी भी बिंदु पर अनुमति से इनकार किया जाता है तो आपको यहां अपडेट किया जाएगा।
वर्तमान अनुमतियों को निर्धारित करने के लिए आपको दो अलग-अलग स्थितियों की जांच करनी होगी।
- यदि उपयोगकर्ता के पास सामान्य स्थान सेवाएं सक्षम हैं या नहीं
CLLocationManager.locationServicesEnabled()
- यदि उपयोगकर्ता ने आपके ऐप के लिए सही अनुमति दी है ..
CLLocationManager.authorizationStatus() == .authorizedWhenInUse
आप एक एक्सटेंशन जोड़ सकते हैं एक आसान विकल्प है:
extension CLLocationManager {
static func authorizedToRequestLocation() -> Bool {
return CLLocationManager.locationServicesEnabled() &&
(CLLocationManager.authorizationStatus() == .authorizedAlways || CLLocationManager.authorizationStatus() == .authorizedWhenInUse)
}
}
जब उपयोगकर्ता ने पहली बार निर्देशों का अनुरोध किया है, तो इसे एक्सेस किया जा रहा है:
private func requestUserLocation() {
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.authorizedToRequestLocation() {
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.requestLocation()
} else {
showAlertNoLocation(locationError: .invalidPermissions)
}
}
यहाँ प्रतिनिधि है:
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if !CLLocationManager.authorizedToRequestLocation() {
showAlertNoLocation(locationError: .invalidPermissions)
}
}
manager.locationServicesEnabled()
बजायCLLocationManager.loationServicesEnabled()
!