2014-09-23 74 views
1

在IOS 8用户现在被要求允许使用设备相机。这很好,但我的问题是我想在用户真正需要相机之前询问权限(当用户第一次加载应用程序时)我知道这可以在要求用户提前访问相机胶卷时完成。要求用户在使用相机之前使用相机的权限

+0

没有API。如果您有良好的使用案例,我建议您向Apple提交一份增强请求。 – matt 2014-09-23 23:45:55

+0

我不知道你的具体使用情况,但是苹果的设计指南指出,出于上下文的弹出窗口可能会令人反感,他们建议不要这样做。我详细阅读了关于在启动时提醒苹果ID恢复应用程序内购买的内容,虽然这还不算差,但可能值得考虑这一建议。 – matt 2014-09-24 00:24:39

+0

@matt'AVCaptureDevice'有一个类方法'requestAccessForMediaType'来做到这一点。 – Rob 2014-12-13 02:23:57

回答

3

该应用程序只要求权限是当相机被实际访问,所以你必须访问它。你当然可以在AVCaptureSession的背景下做到这一点,不要显示你得到的图像。 以下是关于如何使用AVCaptureSession实现此目的的简单的example。 我不会使用它,因为用户不知道相机的用途 - 除了明显的例子(相机应用程序)。用户可能会感到困惑,为什么打开相机。您可以查看描述您使用摄像头的视图,然后在后台激活摄像头以提示用户,或者保持原样,因为它不需要太多时间。

+0

@Aalbert - 我尝试了示例代码,但它不起作用 - 然而,您的答案给了我在我的初始viewController中创建imagePicker然后设置[imagePicker.view setHidden:YES]的想法;这会在用户没有使用相机的情况下提示用户相机提醒。它的作品,但有点凌乱! – pete 2014-09-24 00:41:50

1

要回答我自己的问题以帮助他人解决类似问题,我使用以下代码 - 效果很好,因为要求用户在创建imagePicker之前使用设备相机的权限。

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:NULL]; 
if (deviceInput) 
{ 
    // user has excepted camera 


} else { 

    // user has NOT excepted camera 


} 
+4

这是不正确的。使用'AVCatpureDevice requestAccessForMediaType:completionHandler:'。 – rmaddy 2014-09-27 02:09:12