Presenting camera permission dialog in iOS 8

后端 未结 9 1539
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-29 17:45

When my app tries to access the camera for the first time on iOS 8, the user is presented with a camera permission dialog, much like the microphone one for microphone access

9条回答
  •  醉梦人生
    2020-11-29 18:37

    • Swift 3.0 Solution

      import AVFoundation

    Note: add Privacy - Camera Usage Description key on your Info.plist

    //MARK: Camera Handling

            func callCamera(){
                let myPickerController = UIImagePickerController()
                myPickerController.delegate = self;
                myPickerController.sourceType = UIImagePickerControllerSourceType.camera
    
                self.present(myPickerController, animated: true, completion: nil)
                NSLog("Camera");
            }
            func checkCamera() {
                let authStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo)
                switch authStatus {
                case .authorized: callCamera() // Do your stuff here i.e. callCameraMethod()
                case .denied: alertToEncourageCameraAccessInitially()
                case .notDetermined: alertPromptToAllowCameraAccessViaSetting()
                default: alertToEncourageCameraAccessInitially()
                }
            }
    
            func alertToEncourageCameraAccessInitially() {
                let alert = UIAlertController(
                    title: "IMPORTANT",
                    message: "Camera access required for capturing photos!",
                    preferredStyle: UIAlertControllerStyle.alert
                )
                alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
                alert.addAction(UIAlertAction(title: "Allow Camera", style: .cancel, handler: { (alert) -> Void in
                    UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
                }))
                present(alert, animated: true, completion: nil)
            }
    
            func alertPromptToAllowCameraAccessViaSetting() {
    
                let alert = UIAlertController(
                    title: "IMPORTANT",
                    message: "Camera access required for capturing photos!",
                    preferredStyle: UIAlertControllerStyle.alert
                )
                alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel) { alert in
                    if AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo).count > 0 {
                        AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo) { granted in
                            DispatchQueue.main.async() {
                                self.checkCamera() } }
                    }
                    }
                )
                present(alert, animated: true, completion: nil)
            }
    

提交回复
热议问题