1. ホーム
  2. ios

[解決済み] iOSでカメラの権限を検出する

2022-04-27 17:51:26

質問

非常にシンプルな動画アプリを開発しています。公式のコントロールを使っています。UIImagePickerControllerを使用しています。

ここで問題です。UIImagePickerControllerを初めて提示するとき、iOSは許可を求めます。ユーザーは、「はい」か「いいえ」をクリックできます。ユーザーが「いいえ」をクリックした場合、コントロールは解除されません。その代わり、ユーザーがスタートボタンをクリックし続けると、画面が常に真っ黒のままタイマーが進み、ユーザーはタイマーを止めることも戻ることもできなくなる。ユーザーができることは、アプリを終了させることのみです。次にUIImagePickerControllerが表示されると、やはり黒い画面になり、ユーザはスタートをクリックしても戻ることはできません。

バグかなと思っていたのですが。カメラのパーミッションを検知して、UIImagePickerControllerを表示するかどうか判断する方法はないでしょうか?

どのように解決するのですか?

を確認します。 AVAuthorizationStatus を作成し、ケースを適切に処理してください。

NSString *mediaType = AVMediaTypeVideo;
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
if(authStatus == AVAuthorizationStatusAuthorized) {
  // do your logic
} else if(authStatus == AVAuthorizationStatusDenied){
  // denied
} else if(authStatus == AVAuthorizationStatusRestricted){
  // restricted, normally won't happen
} else if(authStatus == AVAuthorizationStatusNotDetermined){
  // not determined?!
  [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
    if(granted){
      NSLog(@"Granted access to %@", mediaType);
    } else {
      NSLog(@"Not granted access to %@", mediaType);
    }
  }];
} else {
  // impossible, unknown authorization status
}