首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速ios 9应用程序不在设置中

快速ios 9应用程序不在设置中
EN

Stack Overflow用户
提问于 2015-11-23 08:02:57
回答 1查看 2.2K关注 0票数 1

我有运行在ios 8和xcode 6上的快速摄像头代码。我打电话给AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo),但我的应用程序没有出现在Settings -> privacy -> Camera中(但其他应用程序会出现)。

升级到ios 9和xcode 7后,无法获得相机许可工作。我在google上搜索了两天,然后就发现了堆栈溢出。

问题

我导入了AVFoundation并调用了AVFoundation总是得到AVAuthorizationStatus.Denied

  1. 我的应用程序没有显示在设置->隐私->摄像头
  2. 照相机是黑色的
  3. requestAccessForMediaType不打开弹出窗口
  4. authorizationStatusForMediaType总是被拒绝

主要问题是1号。我想如果我能在设置->隐私->摄像头上使用我的应用程序,那么其他问题就解决了。

thigns我试过

  • UIImagePickerController的子类
  • 删除并重新安装我的应用程序
  • 更改绑定ID
  • 将iphone日期更改为3天
  • 在主线程中调用requestAccessForMediaType
  • Xcode 7
  • ios 9.0 9.1
  • iphone 5,5s,6
  • swift 2.1

我的代码

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
        cameraView()
}

func checkCamera() {
        let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
        switch authStatus {
        case AVAuthorizationStatus.Authorized:
            print("AVAuthorizationStatus.Authorized")
        case AVAuthorizationStatus.Denied:
            print("AVAuthorizationStatus.Denied")
        case AVAuthorizationStatus.NotDetermined:
            print("AVAuthorizationStatus.NotDetermined")
        case AVAuthorizationStatus.Restricted:
            print("AVAuthorizationStatus.Restricted")
        default:
            print("AVAuthorizationStatus.Default")
        }

    }

func cameraView(){
        // session
        let mySession : AVCaptureSession = AVCaptureSession()
        var myDevice : AVCaptureDevice? //= AVCaptureDevice()
        let myImageOutput : AVCaptureStillImageOutput = AVCaptureStillImageOutput()
        let devices = AVCaptureDevice.devices()

        let audioCaptureDevice = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio)
        let audioInput = (try! AVCaptureDeviceInput(device: audioCaptureDevice[0] as! AVCaptureDevice))  as AVCaptureInput

        for device in devices {
            if(device.position == AVCaptureDevicePosition.Back){
                myDevice = device as? AVCaptureDevice
            }
        }

        let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
        print(status ==  AVAuthorizationStatus.Authorized)
        print(status ==  AVAuthorizationStatus.Denied)
        print(status ==  AVAuthorizationStatus.Restricted)
        print(status.rawValue)

        if status !=  AVAuthorizationStatus.Authorized {

            AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in
                if granted == false {
                    // Camera not Authorized
                    dispatch_async(dispatch_get_main_queue()) {
                        print("Camera not Authorized")
                        self.checkCamera()
                        return
                    }
                }
            });
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 08:11:34

您需要设置一个新的Info.plist值,与iOS8中用于Location的字符串相同:

只需为这些设置描述字符串即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33866135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档