2014-09-23 62 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