iOS: Demande d'Accès à l'Appareil photo

J'ai une application avec un Code QR Scanner qui fonctionne très bien, mais sur iOS 8 par défaut l'accès à la caméra est "Refusé". Donc je dois aller dans les paramètres et manuellement l'application l'accès à l'utilisation de l'appareil photo. Comment puis-je faire de l'invite qui dit quelque chose comme "aimeriez-vous donner à cette application l'accès à l'utilisation de l'Appareil photo"?

Voici un exemple de mon code de vérification pour les permissions de caméra et ensuite demander la permission si l'utilisateur n'a pas donné. Cependant, le lien à donner des autorisations ne montre jamais et finissent par se montre juste l'UIAlertView. L'état est en effet REFUSÉ lorsque je test, donc, il y a une raison pour laquelle il n'est pas demandé pour les autorisations? Merci!

Aussi j'ai des #import AVFoundation/AVFoundation.h de sorte que n'est pas la question.

-(void) checkCameraAuthorization {
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if(status == AVAuthorizationStatusAuthorized) { //authorized
NSLog(@"camera authorized");
}
else if(status == AVAuthorizationStatusDenied){ //denied
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.
NSLog(@"DENIED");
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.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Not Authorized" message:@"Please go to Settings and enable the camera for this app to use this feature." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
}
}];
}
}
else if(status == AVAuthorizationStatusRestricted){ //restricted
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Not Authorized" message:@"Please go to Settings and enable the camera for this app to use this feature." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
}
else if(status == AVAuthorizationStatusNotDetermined){ //not determined
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if(granted){ //Access has been granted ..do something
NSLog(@"camera authorized");
} else { //Access denied ..do something
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Not Authorized" message:@"Please go to Settings and enable the camera for this app to use this feature." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
}
}];
}
}

OriginalL'auteur MSU_Bulldog | 2015-08-31