10

カメラを使用しようとすると、いくつかの問題が発生します。問題は、設定の下にカメラのエントリが表示されるデバイスと表示されないデバイスがあることです。カメラ スイッチが表示されないデバイスでは、カメラに権限がなく、有効にする設定にも表示されないため、カメラを使用できません。

これは、動作するデバイスでどのように見えるかです:

ここに画像の説明を入力

そして、これは動作しないデバイスでどのように見えるかです.

ここに画像の説明を入力

これらのスクリーンショットを撮ったとき、アプリケーションは既にアクセス許可を求めているはずですが、そうではありませんでした。

また、これらのデバイスで制限が有効になっていないことも確認しました。

何か案は?

更新 1: コードを追加

これは、カメラを表示するために使用しているコードです (ネイティブのカメラ ビュー コントローラーではなく、カスタム ビューの下にあります)。

self.captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoCaptureDevice error:&error];
if(videoInput)
{
    [self.captureSession addInput:videoInput];
}
else
{
    NSLog(@"Error: %@", error);
}

AVCaptureMetadataOutput *metadataOutput = [[AVCaptureMetadataOutput alloc] init];
[self.captureSession addOutput:metadataOutput];
[metadataOutput setMetadataObjectsDelegate:self
                                     queue:dispatch_get_main_queue()];
[metadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeQRCode]];

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
previewLayer.frame = self.view.layer.bounds;
UIView * previewView = [[UIView alloc] initWithFrame:self.view.frame];
[previewView.layer addSublayer:previewLayer];
[self.view addSubview:previewView];
[self.view sendSubviewToBack:previewView];

[self.captureSession startRunning];
4

5 に答える 5

8

セッションを開く前に許可を要求する必要があります。使用する

[AVCaptureDevice requestAccessForMediaType:completionHandler:]
于 2015-09-01T13:12:16.427 に答える