CLLocationButton

Panther·2021년 9월 9일
0
post-custom-banner

https://developer.apple.com/documentation/corelocationui/cllocationbutton

"A button that grants one-time location authorization."

권한을 한 번만 승인하는 버튼입니다.

Declaration

class CLLocationButton : UIControl

Overview

CLLocationButton은 위치 데이터 접근에 한 번만 승인을 요청하는 것을 단순화합니다. 사용자가 앱의 위치 데이터 관련 기능을 사용할 때마다 사용자의 위치 데이터에 대한 일시적인 접근을 승인하길 원하는 상황에서 UI로 이 버튼을 추가하시기 바랍니다.

사용자가 이 버튼을 처음으로 탭하면 코어 로케이션은 사용자가 위치 데이터에 일시적인 접근을 승인하길 원할 때 이 UI 요소를 사용해서 편의를 확인하는 것을 요청합니다. 사용자가 동의하면 앱은 임시 CLAuthorizationStatus.authorizedWhenInUse 권한을 받으며, 사용자가 앱의 표준 위치 권한 요청에 대한 "한 번만 허용"을 선택할 때처럼 동작합니다. 이 임시 권한은 앱이 사용중이 않게 될 때 만료됩니다.

사용자가 CLLocationButton을 사용해서 동의한 후 버튼은 사용자에게 추가적인 알림을 표시하지 않고 미래 권한 요청에 대해 승인된 것이 됩니다. 사용자가 다음에 탭하면 이 버튼은 확인 요청 없이 한 번의 권한 승인을 간단하게 해줍니다.

이 임시 권한을 받은 후 코어 로케이션 API를 사용해서 사용자의 위치를 가져올 수 있으며, 해당 위치 데이터와 관련이 있는 앱 특정 작업을 수행할 수 있습니다. 버튼에 타깃 및 액션을 추가함으로써, 권한을 가져온 후 수행하기 위한 작업 시작을 위해 버튼을 연결하시기 바랍니다. 이 액션은 사용자가 이 버튼을 탭할 때마다 활성화된다는 것을 기억해야 하며, 앱이 이미 위치 권한을 갖고 있는지와 상관이 없습니다.

아래처럼 인터페이스 빌더 혹은 코드에서 CLLocationButton을 생성할 수 있습니다.

let locationButton = CLLocationButton()
locationButton.icon = .arrowFilled
locationButton.label = .currentLocation
locationButton.cornerRadius = 25.0
locationButton.addTarget(self, action: #selector(userPressedLocationButton), for: .touchUpInside)

Important
사용자가 버튼을 탭하면 위치 데이터를 가져오기 위한 한 번의 권한을 제공하며, 위치 데이터 자체는 아닙니다. 위치 데이터를 가져오는 것에 대한 더 자세한 정보는 Adding Location Services to Your App을 보시기 바랍니다.

Adding Location Services to Your App
https://developer.apple.com/documentation/corelocation/adding_location_services_to_your_app
https://velog.io/@panther222128/Adding-Location-Services-to-Your-App

아이콘 및 레이블 스타일을 구체화해서 버튼의 컨텐트를 설정할 수 있습니다. cornerRadiusfontSize 속성을 사용해서 버튼의 모양을 커스터마이징하거나 backgroundColortintColor 표준 뷰 모양 속성을 사용해서 모양을 커스터마이징할 수 있습니다. 디자인 가이드는 Human Interface Guidelines를 보시기 바랍니다.

Human Interface Guidelines
https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/accessing-user-data/
https://velog.io/@panther222128/App-Architecture#accessing-user-data

post-custom-banner

0개의 댓글