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.
InformationsquelleAutor Ethan Allen | 2014-09-27