লোকেশন পারমিশন রিকোয়েস্ট করার জন্য আমরা Apple-এর CLLocationManager ক্লাস ব্যবহার করব। এই ক্লাসের ইনস্ট্যানস ব্যবহার করে Core Location সার্ভিস কনফিগার, স্টার্ট এবং স্টপ করা যায়।
CLLocationManager ক্লাস সম্পর্কে আরো জানুন: https://developer.apple.com/documentation/corelocation/cllocationmanager
iOS অ্যাপ্লিকেশন দুটি লেভেলের লোকেশন অ্যাক্সেস সাপোর্ট করে।
অ্যাপ ব্যবহার করার সময় (While using the app) − অ্যাপ ফোরগ্রাউন্ডে থাকাকালীন ডিভাইসের লোকেশন অ্যাক্সেস করতে পারে। এটাকে "when-in-use authorization" বলা হয়।
সবসময় (Always) − অ্যাপ ফোরগ্রাউন্ডে বা ব্যাকগ্রাউন্ডে থাকা সত্ত্বেও লোকেশন অ্যাক্সেস করতে পারে।
এখানে আমরা when-in-use authorization ব্যবহার করব: শুধু অ্যাপ রান করাকালীন লোকেশন সার্ভিসের অনুমতি রিকোয়েস্ট করা।
https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/requesting_when-in-use_authorization
Step 1 − Xcode, Single View Application, নাম দিন LocationServices।
Step 2 − Main.storyboard খুলুন এবং একটি বাটন যোগ করুন, নাম দিন getLocation।

Step 3 − ViewController.swift-এ বাটনের @IBAction যোগ করুন।
@IBAction func btnGetLocation(_ sender: Any) { }
Step 4 − CoreLocation ইম্পোর্ট করুন লোকেশন ক্লাস ব্যবহার করতে। import CoreLocation
Step 5 − info.plist খুলুন (অ্যাপ রান করাকালীন লোকেশন আপডেটের পারমিশন ইনেবল করার জন্য একটি স্পেশাল কী প্রয়োজন)। Right-click → Add Row। নিচের মান দিন।

Step 6 ViewController.swift-এ CLLocationManager অবজেক্ট তৈরি করুন।
let locationManager = CLLocationManager()
Step 7 − ViewController.swift-এ বাটন অ্যাকশনে নিচের কোড যোগ করুন।
@IBAction func btnGetLocation(_ sender: Any) {
let locStatus = CLLocationManager.authorizationStatus()
switch locStatus {
case .notDetermined:
locationManager.requestWhenInUseAuthorization()
return
case .denied, .restricted:
let alert = UIAlertController(title: "Location Services are disabled", message: "Please enable Location Services in your Settings", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(okAction)
present(alert, animated: true, completion: nil)
return
case .authorizedAlways, .authorizedWhenInUse:
break
}
}
authorizationStatus করেন্ট অথোরাইজেশন স্ট্যাটাস রিটার্ন করে locStatus-এ। When in use authorisation অ্যাপ ফোরগ্রাউন্ডে থাকাকালীন লোকেশন আপডেট পায়। লোকেশন সার্ভিসেস ডিজেবল থাকলে ইউজারকে "Location Services are disabled" মেসেজ সহ অ্যালার্ট দেখাবে।
অ্যাপ্লিকেশন রান করুন।
