はじめに
Swiftで開発していて、カメラと写真のアクセス許可を取得する実装する機会があったので備忘録として記事にします。
カメラのアクセス許可
カメラのアクセス許可は、AVCaptureDeviceで取得できるようです。
// カメラのアクセス許可の状態を取得する
let status = AVCaptureDevice.authorizationStatus(for: .video)
switch (c) {
case .authorized:
print("camera is authorized")
case .denied:
print("camera is denied")
case .restricted:
print("camera is restricted")
case .notDetermined:
print("camera is notDetermined")
@unknown default:
print("camera is unknown")
}
写真のアクセス許可
写真のアクセス許可は、PHPhotoLibraryで取得できるようです。
注意事項
iOS14以降ではauthorizationStatus(for:)を使わないと、「選択した写真」という許可状態(.limited)が取得できないみたいです。
authorizationStatus()を使うと、「選択した写真」という許可状態は.authorizedで返ってきます。
var status: PHAuthorizationStatus
if #available(iOS 14, *) {
status = PHPhotoLibrary.authorizationStatus(for: .readWrite)
} else {
status = PHPhotoLibrary.authorizationStatus()
}
switch (status) {
case .authorized:
print("photo is authorized")
case .denied:
print("photo is denied")
case .restricted:
print("photo is restricted")
case .notDetermined:
print("photo is notDetermined")
case .limited:
print("photo is limited")
@unknown default:
print("photo is unknown")
}