2015-08-31 16 views
9

Ho un'app con uno scanner di codici QR che funziona bene, ma su iOS 8 l'accesso predefinito alla telecamera è "Negato". Pertanto devo entrare nelle impostazioni e dare manualmente all'app l'accesso per utilizzare la fotocamera. Come posso rendere il prompt che dice qualcosa come "Vuoi dare a questa app l'accesso per utilizzare la fotocamera"?iOS: Richiesta di accesso alla telecamera

Ecco un esempio del mio codice che verifica le autorizzazioni della telecamera e quindi richiede il permesso se l'utente non le ha fornite. Tuttavia, il collegamento per dare le autorizzazioni non appare mai e alla fine mostra semplicemente UIAlertView. Lo stato è ANCHE NEGATO quando collaudo, quindi c'è una ragione per cui non sta chiedendo permessi? Grazie!

Inoltre, ho #import AVFoundation/AVFoundation.h, quindi non è questo il problema.

-(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]; 
     } 
    }]; 
} 
} 
+0

risposto qui: http://stackoverflow.com/questions/24229422/accessing-the-settings-app-from-your -app-in-ios-8 –

risposta

13

Suoni come l'app è già stato negato l'accesso alla fotocamera. In questo caso, non è possibile richiedere di nuovo. È possibile richiedere all'utente solo l'accesso una volta per installazione. Dopodiché dovrai indirizzare l'utente alle impostazioni.

inviare l'utente alle impostazioni in cui la fotocamera può essere attivata con questo (su iOS 8):

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 

Se si esegue il test, provare a eliminare l'applicazione dal telefono e poi installarlo e lanciarlo di nuovo. Questo ti riporta nello stato AVAuthorizationStatusNotDeterminato.

+1

Questo è un piccolo trucco, non mi ero reso conto che potevo reindirizzare l'utente a Impostazioni dalla mia app. Funzionerà, non ero un grande fan di dire loro le indicazioni in un avviso. Grazie! ** Esiste anche un modo per inviarli direttamente alle impostazioni dell'app invece di aprire l'app Impostazioni? –

+1

Attualmente, il dispositivo "ricorda" le impostazioni sulla privacy anche se l'app viene cancellata. Quindi, oltre a ripristinare ** tutte ** le impostazioni sulla privacy del dispositivo, non c'è modo di ottenere di nuovo il popup originale. – bauerMusic