Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Presenting camera permission dialog in iOS 8

When my app tries to access the camera for the first time on iOS 8, the user is presented with a camera permission dialog, much like the microphone one for microphone access in iOS 7.

In iOS 7, it was possible to invoke the microphone permission dialog beforehand and see if the permission was granted (see this question, for example). Is there a similar way to invoke the camera permission dialog in iOS 8? Can the dialog be combined for microphone AND camera access permission?

like image 361
jamix Avatar asked Sep 12 '14 07:09

jamix


People also ask

How do I give camera permission in IOS?

Step 1: Go to Settings > Privacy. Step 2: Tap on Camera to see which apps have access to it. You can allow or block apps using Camera from here.

How do I grant camera permission?

Enable camera on an Android deviceOpen the “Settings” app. Tap “Apps & notifications”. Tap “Merge Explorer” or “Object Viewer” (both need permission). Tap “Permissions”, then choose the “Camera” permission to enable.

Where is camera permission in settings?

Tap Site Settings. Tap Microphone or Camera. Tap to turn the microphone or camera on or off. Allow.


Video Answer


2 Answers

Here is the approach we ended up using:

if ([AVCaptureDevice respondsToSelector:@selector(requestAccessForMediaType: completionHandler:)]) {     [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {         // Will get here on both iOS 7 & 8 even though camera permissions weren't required          // until iOS 8. So for iOS 7 permission will always be granted.         if (granted) {             // Permission has been granted. Use dispatch_async for any UI updating             // code because this block may be executed in a thread.             dispatch_async(dispatch_get_main_queue(), ^{                 [self doStuff];             });                         } else {             // Permission has been denied.         }     }]; } else {     // We are on iOS <= 6. Just do what we need to do.     [self doStuff]; } 
like image 98
jamix Avatar answered Sep 29 '22 13:09

jamix


I'm running into a similar issue, if the user has denied camera access when they are first prompted, pressing the button to take snapshot results in a black screen in the camera mode.

However I want to detect that the user has declined access and prompt them it must be turned on but I can't find any functions to check the current user camera access, is there such a function?

EDIT: The following check will let you know in IOS 8 about camera access:

#import <AVFoundation/AVFoundation.h>  AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];          if(status == AVAuthorizationStatusAuthorized) { // authorized              }     else if(status == AVAuthorizationStatusDenied){ // denied              }     else if(status == AVAuthorizationStatusRestricted){ // restricted                       }     else if(status == AVAuthorizationStatusNotDetermined){ // not determined                  [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {             if(granted){ // Access has been granted ..do something                             } else { // Access denied ..do something                             }         }];     } 

This information was found on the following question (How to know that application have camera access or not programmatically in iOS8):

like image 21
SmokersCough Avatar answered Sep 29 '22 15:09

SmokersCough