Notice
Recent Posts
Recent Comments
Link
투케이2K
10. (ios/swift) 퍼미션 권한 요청 수행 실시 - info , permission 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[방법 설명]
[소스 코드]
import UIKit
import AVFoundation
import Photos
class MainController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("")
print("===============================")
print("[MainController > viewDidLoad() : 뷰 로드 실시]")
print("===============================")
print("")
// [권한 설정 퍼미션 확인 실시]
checkCameraPermission() // 카메라 사용 권한
checkAlbumPermission() // 앨범 접근 권한
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("===============================")
print("[MainController > viewDidAppear() : 뷰 화면 표시]")
print("===============================")
print("")
// [권한 설정 퍼미션 확인 실시]
if permissionNoArray.count > 0 && permissionNoArray.isEmpty == false {
self.intentAppSettings(content: permissionNoArray.description+" 권한이 비활성화 상태입니다. 권한 설정으로 이동하시겠습니까?")
}
else {
self.showAlert(tittle: "권한 설정 확인", content: "모든 권한이 정상 부여되었습니다", okBtb: "확인", noBtn: "")
}
}
// [권한 거부 퍼미션을 담을 배열 선언 생성]
var permissionNoArray : Array<String> = []
/*
[카메라 권한 요청]
필요 : import AVFoundation
*/
func checkCameraPermission(){
print("")
print("===============================")
print("[MainController > checkCameraPermission() : 카메라 권한 요청 실시]")
print("===============================")
print("")
AVCaptureDevice.requestAccess(for: .video, completionHandler: { (granted: Bool) in
if granted {
print("")
print("===============================")
print("[MainController > checkCameraPermission() : 카메라 권한 허용 상태]")
print("===============================")
print("")
} else {
print("")
print("===============================")
print("[MainController > checkCameraPermission() : 카메라 권한 거부 상태]")
print("===============================")
print("")
self.permissionNoArray.append("카메라")
}
})
}
/*
[앨범 접근 권한 요청]
필요 : import Photos
*/
func checkAlbumPermission(){
print("")
print("===============================")
print("[MainController > checkAlbumPermission() : 앨범 접근 권한 요청 실시]")
print("===============================")
print("")
PHPhotoLibrary.requestAuthorization( { status in
switch status{
case .authorized:
print("")
print("===============================")
print("[MainController > checkAlbumPermission() : 앨범 접근 권한 허용 상태]")
print("===============================")
print("")
case .denied:
print("")
print("===============================")
print("[MainController > checkAlbumPermission() : 앨범 접근 권한 거부 상태]")
print("===============================")
print("")
self.permissionNoArray.append("앨범 및 사진 접근")
case .restricted, .notDetermined:
print("")
print("===============================")
print("[MainController > checkAlbumPermission() : 앨범 접근 권한 선택 대기 상태]")
print("===============================")
print("")
default:
break
}
})
}
// [애플리케이션 설정창 이동 실시 메소드]
func intentAppSettings(content:String){
// 앱 설정창 이동 실시
let settingsAlert = UIAlertController(title: "권한 설정 알림", message: content, preferredStyle: UIAlertController.Style.alert)
let okAction = UIAlertAction(title: "확인", style: .default) { (action) in
// [확인 버튼 클릭 이벤트 내용 정의 실시]
if let url = URL(string: UIApplication.openSettingsURLString) {
print("")
print("===============================")
print("[MainController > intentAppSettings() : 앱 설정 화면 이동]")
print("===============================")
print("")
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
settingsAlert.addAction(okAction) // 버튼 클릭 이벤트 객체 연결
let noAction = UIAlertAction(title: "취소", style: .default) { (action) in
// [취소 버튼 클릭 이벤트 내용 정의 실시]
return
}
settingsAlert.addAction(noAction) // 버튼 클릭 이벤트 객체 연결
// [alert 팝업창 활성 실시]
present(settingsAlert, animated: false, completion: nil)
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
12. (ios/swift) 실시간 비콘 beacon 목록 스캔 실시 (4) | 2021.10.18 |
---|---|
11. (ios/swift) 실시간 블루투스 목록 스캔 실시 - bluetooth scan (0) | 2021.10.17 |
9. (ios/swift) 현재 연결된 네트워크 상태 체크 실시 - NWPathMonitor (0) | 2021.10.17 |
8. (ios/swift) timer 타이머 사용해 실시간 반복 작업 수행 실시 (0) | 2021.10.16 |
7. (ios/swift) 생명 주기 life cycle 라이프 사이클 관리 실시 - AppDelegate , SceneDelegate , ViewController (0) | 2021.10.16 |
Comments