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
Vous devez vous connecter pour publier un commentaire.
Sonne comme l'application a déjà été refusé l'accès à la caméra. Dans ce cas, vous ne pouvez pas vous invite de nouveau. Vous pouvez seulement demander à l'utilisateur pour l'accès une fois par installer. Après cela, vous aurez besoin pour diriger l'utilisateur vers les paramètres.
Envoyer à l'utilisateur de vos paramètres où la Caméra peut être activée avec cette (sur iOS8):
Si vous testez, essayez de supprimer l'application de votre téléphone, puis de l'installer et de l'exécuter à nouveau. Cela vous met nouveau dans la AVAuthorizationStatusNotDetermined état.
Actuellement, le dispositif de "mémoriser" les paramètres de confidentialité, même si l'Application est supprimée. Donc, en dehors de la réinitialisation de tous de l'appareil, les paramètres de confidentialité, il n'y a aucun moyen d'obtenir l'original de la fenêtre contextuelle.
OriginalL'auteur Dan Loughney
pour swift 3 :
pour plus de regarder cette vidéo https://www.youtube.com/watch?v=Btd1XH-gHKM
OriginalL'auteur Eduardo Oliveros