菜鸟教程小白 发表于 2022-12-11 17:14:30

ios - swift中相机和照片库的隐私问题


                                            <p><p>我的应用最初在各种设备上访问相机和照片库都没有问题。</p>

<p>现在我发现在某些设备上我无法访问相机或照片库,并且在我尝试访问相机和照片后,该应用根本没有出现在隐私设置中。</p>

<p>无论我做什么,我都无法让 IOS 识别我的应用。</p>

<p>如何访问相机和照片库,并让我的应用出现在隐私设置中?
代码:</p>

<pre><code>@IBAction func openCameraButton(sender: AnyObject) {
      if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) == true {
      let imagePicker = UIImagePickerController()
      imagePicker.delegate = self
      imagePicker.sourceType = .Camera//UIImagePickerControllerSourceType.Camera;
      imagePicker.allowsEditing = false
      self.presentViewController(imagePicker, animated: true, completion: nil)
    }else{
      noCamera()

    }
}
@IBAction func openPhotoLibraryButton(sender: AnyObject) {
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) == true {
      let imagePicker = UIImagePickerController()
      imagePicker.delegate = self
      imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
      imagePicker.allowsEditing = true
      self.presentViewController(imagePicker, animated: true, completion: nil)
    }else{
      noAccess()
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我使用此代码检查可访问性并在需要时请求它:</p>

<pre><code>import AVFoundation
import Photos

func getCameraAccessibilityAndRequestIfNeeded(completion: (isAccesible: Bool)-&gt;Void) {
    let authorizationState = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
    switch authorizationState {
    case .NotDetermined:
      AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (didAllow) in
            completion(isAccesible: didAllow)
      })
    case .Restricted:
      completion(isAccesible: false)
    case .Denied:
      completion(isAccesible: true)
    case .Authorized:
      completion(isAccesible: true)
}
}

func getPhotoRollAccessibilityAndRequestIfNeeded(completion: (isAccesible: Bool)-&gt;Void) {
    PHPhotoLibrary.requestAuthorization { (status) in
      switch status {
      case .Authorized:
            completion(isAccesible: true)
      case .Restricted, .Denied , .NotDetermined:
            completion(isAccesible: false)
      }
    }
}
</code></pre>

<p><strong>用法:</strong></p>

<pre><code>self.getCameraAccessibilityAndRequestIfNeeded { (isAccesible) in
            if isAccesible {
                // Access confirmed
            } else {
                // No access
            }
      }

      self.getPhotoRollAccessibilityAndRequestIfNeeded { (isAccesible) in
            if isAccesible {
                // Access confirm
            } else {
                // No access
            }
      }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - swift中相机和照片库的隐私问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38904468/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38904468/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - swift中相机和照片库的隐私问题