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

标签 ios swift

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

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

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

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

@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()
    }
}

最佳答案

我使用此代码进行无障碍检查并在需要时请求它:

import AVFoundation
import Photos

func getCameraAccessibilityAndRequestIfNeeded(completion: (isAccesible: Bool)->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)->Void) {
    PHPhotoLibrary.requestAuthorization { (status) in
        switch status {
        case .Authorized:
            completion(isAccesible: true)
        case .Restricted, .Denied , .NotDetermined:
            completion(isAccesible: false)
        }
    }
}

用法:

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

        self.getPhotoRollAccessibilityAndRequestIfNeeded { (isAccesible) in
            if isAccesible {
                // Access confirm
            } else {
                // No access
            }
        }

关于ios - swift 中相机和照片库的隐私问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38904468/

相关文章:

c# - 如何删除 Visual Studio 中调试器建议的约束

java - 将 Java 转换为 Objective-c(Android 到 iOS)

ios - 根据字符串长度绘制UILabel

swift - 我怎样才能得到 key :value from a jsonobject in Swift?

ios - 具有顺序和限制的 Firestore 复合查询

ios - 如何在 Swift 中创建 PDF/A 文件?

ios - 您可以从 Squarespace 托管网站深度链接到应用程序吗?

javascript - wkwebview:找出在 web View 中加载的内容是否为 PDF 并给出下载按钮

ios - SCNNode 上的 CIFilter 仅适用于模拟器

ios - 如何以编程方式导航到 ViewController 并传递数据