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

Làm cách nào để yêu cầu quyền theo chương trình để sử dụng dịch vụ định vị trong iPhone / iOS?

Để yêu cầu quyền dịch vụ định vị trong iOS nhanh chóng, chúng tôi có thể sử dụng CLLocationManager.

Chúng tôi sẽ làm điều này với sự trợ giúp của một dự án mẫu. Vì vậy, hãy tạo một dự án mới. Đầu tiên, chúng ta cần tạo một đối tượng locationManager, vì vậy trong bộ điều khiển chế độ xem của bạn.

var locationManager = CLLocationManager()

Bây giờ, trước hết, chúng ta cần kiểm tra xem dịch vụ định vị đã được bật trên thiết bị hay chưa. Để kiểm tra điều này, chúng tôi sẽ sử dụng

Hàm CLLocationManager.locationServicesEnabled (), trả về giá trị Boolean cho biết liệu dịch vụ vị trí trên thiết bị có đang hoạt động hay không.

if CLLocationManager.locationServicesEnabled() {
   print("permissions allowed")
} else {
   locationManager.requestAlwaysAuthorization()
   locationManager.requestWhenInUseAuthorization()
}

Trong ví dụ trên, nếu các dịch vụ vị trí được bật, thì chúng tôi sẽ in "quyền được phép", nếu không, chúng tôi yêu cầu hai loại ủy quyền, ủy quyền alwaysInUse và WhenInUse.

Bây giờ, hãy xem một ví dụ khác trong đó chúng ta sẽ xem loại quyền nào được cấp nếu các dịch vụ vị trí đang hoạt động trên một thiết bị.

Chúng tôi sẽ sử dụng phương thức CLLocationManager.authorizationStatus (), phương thức này sẽ trả về cho chúng tôi loại ủy quyền được cấp. Đây là một enum có 5 giá trị có thể có.

Theo tài liệu chính thức của Apple, enum có các giá trị sau.

không được xác định, hạn chế, bị từ chối, được ủy quyền, được ủy quyềnKhiInUse.

Hãy xem ví dụ khác.

if CLLocationManager.locationServicesEnabled() {
   switch CLLocationManager.authorizationStatus() {
      case .authorizedAlways,.authorizedWhenInUse : print("authorized.")
      case .denied,.restricted,.notDetermined : print("not authorized.")
   }
}