Computer >> Máy Tính >  >> Lập trình >> IOS

Cách yêu cầu Quyền vị trí trong thời gian chạy trên iOS

Để yêu cầu Quyền vị trí, chúng tôi sẽ sử dụng lớp CLLocationManager của Apple. Bạn sử dụng các phiên bản của lớp này để định cấu hình, khởi động và dừng các dịch vụ Vị trí cốt lõi.

Bạn có thể đọc thêm về lớp CLLocationManager tại đây.

https://developer.apple.com/documentation/corelocation/cllocationmanager

Ứng dụng iOS có thể hỗ trợ một trong hai cấp độ truy cập thông tin vị trí.

  • Trong khi sử dụng ứng dụng - Ứng dụng có thể truy cập vị trí của thiết bị khi ứng dụng đang được sử dụng. Đây còn được gọi là “ủy quyền khi sử dụng”.

  • Luôn luôn - Ứng dụng có thể truy cập vị trí của thiết bị khi ứng dụng đang được sử dụng hoặc trong nền.

Ở đây, chúng tôi sẽ sử dụng ủy quyền khi sử dụng:Chỉ yêu cầu ủy quyền để sử dụng dịch vụ vị trí khi ứng dụng của bạn đang chạy.

https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/requesting_when-in-use_authorization

Bước 1 - Mở ứng dụng Xcode, Single View, đặt tên là LocationServices.

Bước 2 - Mở Main.storyboard và thêm một nút và đặt tên là getLocation.

Cách yêu cầu Quyền vị trí trong thời gian chạy trên iOS

Bước 3 - Trong ViewController.swift, thêm @IBAction của nút

@IBAction func btnGetLocation(_ sender: Any) {
}

Bước 4 - Nhập Corelocation để sử dụng các lớp vị trí. nhập CoreLocation

Bước 5 - Mở info.plist của bạn (để kích hoạt quyền cập nhật vị trí trong khi ứng dụng đang chạy, cần có một khóa đặc biệt). Nhấp chuột phải và chọn Thêm hàng. Nhập các Giá trị sau.

Cách yêu cầu Quyền vị trí trong thời gian chạy trên iOS

Bước 6 Mở ViewController.swift và tạo đối tượng CLLocationManager,

let locationManager = CLLocationManager()

Bước 7 - Trong ViewController.swift, hãy thêm mã sau vào hành động của nút,

@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
   }
}

Trạng thái ủy quyền trả về trạng thái ủy quyền hiện tại cho locStatus. Ủy quyền khi sử dụng nhận được cập nhật vị trí trong khi ứng dụng ở nền trước. Khi dịch vụ vị trí bị tắt, người dùng sẽ được hiển thị một cảnh báo với thông báo Dịch vụ vị trí bị tắt.

Hãy chạy ứng dụng,

Cách yêu cầu Quyền vị trí trong thời gian chạy trên iOS