民间,
我迫切需要一些反馈。我已经在这几天工作,没有运气。我有一个应用程序已发布到App Store并在9.0之前工作。问题是相机。当用户尝试扫描条形码时,他/她被提升以允许在设备上使用相机。使用9.0时,这似乎只能在较旧的设备上打破:5s,5c(有些不是全部),迷你iPad。作为调试的一部分,我使用了Apple的AVCam示例代码并使用它更新了应用程序。 AVCam编译并从Xcode 7加载到5s,相机工作。我的应用程序,使用样本中的AVCam摄像头代码(复制和粘贴),从Xcode 7编译和加载,仍然从不提示用户允许相机。我的iPhone 6 Plus适用于所有这些迭代(第一次提示用户)。我觉得它是应用程序环境中的东西,因为它是由Xcode 5创建的,然后更新为Xcode 6,现在是Xcode 7.但问题是在哪里看?顺便说一句,旧设备上的相机状态以"未确定"开始,并显示黑屏。当用户再次尝试使用相机时,此时我会看到相机状态"拒绝"。每次全新安装后,都不会向用户显示提示。
设置>隐私>相机显示该应用程序从未要求相机。但我知道这不是真的:代码确实要求了。
这是请求相机使用的狙击码:
switch ( [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo] )
{
case AVAuthorizationStatusAuthorized:
{
// The user has previously granted access to the camera.
NSLog(@" ******* CAMERA USAGE AUTHORIZED FROM THE START ******* ");
break;
}
case AVAuthorizationStatusNotDetermined:
{
// The user has not yet been presented with the option to grant video access.
// We suspend the session queue to delay session setup until the access request has completed to avoid
// asking the user for audio access if video access is denied.
// Note that audio access will be implicitly requested when we create an AVCaptureDeviceInput for audio during session setup.
NSLog(@"***** CAMERA STATUS NOT DETERMINED FROM THE START ***** ");
dispatch_suspend( self.sessionQueue );
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^( BOOL granted ) {
NSLog(@" Do we now have permission %d", granted);
if ( ! granted ) {
self.setupResult = AVCamSetupResultCameraNotAuthorized;
}
dispatch_resume( self.sessionQueue );
}];
break;
}
default:
{
// The user has previously denied access.
NSLog(@"**** CAMERA USAGE NOT AUTHORIZED FROM THE START **** ");
self.setupResult = AVCamSetupResultCameraNotAuthorized;
break;
}
}