আপনি যে অবস্থানের পরিষেবাগুলি ব্যবহার করেন সেগুলির জন্য অনুমতি চাইতে:
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()
!