Est-il un moyen de demander à l'utilisateur d'accéder à la Caméra après qu'ils ont déjà refusé sur iOS?
Je suis en utilisant ce code, mais malheureusement il ne fonctionne pas.
Après qu'un utilisateur a refusé accéder à la caméra, j'ai envie de leur demander la permission d'utiliser la caméra à nouveau la prochaine fois que vous essayez de charger (dans ce cas, c'est un scanner de code-barres à l'aide de la vue de la caméra). J'ai toujours AVAuthorizationStatusDenied
et puis granted
toujours automatiquement renvoie NO
même si je demande de nouveau dans le code.
Beaucoup de mes utilisateurs sont d'e-mailing en me disant: "mon écran est noir, quand j'essaie de codes à barres de numérisation" et c'est parce qu'ils ont refusé accéder à la caméra pour une raison quelconque. Je veux être en mesure de les inciter à nouveau parce que probablement le refus a été une erreur.
Est-il possible de faire cela?
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if(authStatus == AVAuthorizationStatusAuthorized)
{
NSLog(@"%@", @"You have camera access");
}
else if(authStatus == AVAuthorizationStatusDenied)
{
NSLog(@"%@", @"Denied camera access");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if(granted){
NSLog(@"Granted access to %@", AVMediaTypeVideo);
} else {
NSLog(@"Not granted access to %@", AVMediaTypeVideo);
}
}];
}
else if(authStatus == AVAuthorizationStatusRestricted)
{
NSLog(@"%@", @"Restricted, normally won't happen");
}
else if(authStatus == AVAuthorizationStatusNotDetermined)
{
NSLog(@"%@", @"Camera access not determined. Ask for permission.");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if(granted){
NSLog(@"Granted access to %@", AVMediaTypeVideo);
} else {
NSLog(@"Not granted access to %@", AVMediaTypeVideo);
}
}];
}
else
{
NSLog(@"%@", @"Camera access unknown error.");
}
- Malheureusement, il n'existe aucun moyen de demander à nouveau. Vous avez juste pop up un UIAlertView et leur faire savoir à l'activer dans les paramètres. Une option pour aider à réduire vers le bas sur les gens accidentellement frapper pas pourrait être de créer un écran de démarrage avant que vous êtes sur le point de demander et d'avertir l'utilisateur que si ils n'ont pas touché permettre de ne pas pouvoir utiliser l'application correctement.
Vous devez vous connecter pour publier un commentaire.
Après quelques recherches il semble que vous ne pouvez pas faire ce que je voudrais. Ici c'est l'alternative que j'ai codé pour afficher une boîte de dialogue et ouvrez l'application Paramètres automatiquement si sur iOS 8+.
Quelques remarques:
NSCameraUsageDescription
clé dans votre Info.plist pour être en mesure de demander d'accéder à la caméra, sinon votre application crash au moment de l'exécution.Swift 4:
En haut de votre vue-contrôleur:
Avant d'ouvrir la vue de la caméra:
Refus d'alerte avec l'achèvement de bloc:
Objective-C:
En haut de votre vue-contrôleur:
Avant d'ouvrir la vue de la caméra:
Refus d'alerte:
De déléguer l'appel pour la UIAlertView:
AVAuthorizationStatusRestricted
.Une fois qu'ils ont refusé accéder à la caméra, l'utilisateur peut autoriser l'utilisation de la caméra de votre app dans les Paramètres. De par sa conception, vous ne pouvez pas remplacer ce dans votre propre code.
Vous pouvez détecter ce cas avec l'exemple de code suivant, puis expliquer à l'utilisateur comment résoudre le problème: iOS 7 UIImagePickerController Pas d'Image de la Caméra
Pour Swift 3.0
Cela va conduire l'utilisateur sur les paramètres de modification de l'autorisation.
Code complet de la Caméra d'accès et la photo de l'accès à la bibliothèque
À la poignée de la caméra d'action utilisez le code ci-dessous:
L'appel de méthode
Méthode pour gérer la caméra de la fonctionnalité d'accès