2017-04-04 1 views
1

Sur iOS, mon application vérifie les autorisations d'utilisation de l'appareil photo, puis, si tout va bien, passe à l'appareil photo.Cordova/Ionic 2 problèmes d'autorisations d'appareil photo iOS 10.2.1

Le problème est que sur:

  • iOS 8: tout fonctionne bien,
  • iOS 10.2.1: Je reçois l'alerte d'erreur.

Pourtant, l'application me permet toujours d'utiliser l'appareil photo par la suite.

Qu'est-ce que je fais de mal sur iOS?

Voici ma méthode simplifiée par souci de concision:

checkPermissionsForCamera() { 
    this._Diagnostic.isCameraAuthorized().then(cameraIsAuthorised => { 
     if (cameraIsAuthorised) { 
      getPhoto(); // etc.... 
     } 
     else { 
      this._Diagnostic.requestCameraAuthorization().then(cameraAuthorisationGranted => { 
       if (cameraAuthorisationGranted.toLowerCase() == 'granted') { 
        getPhoto(); // etc.... 
       } 
       else { 
        alert('Please go to your device settings and enable camera permissions.'); 
       } 
      }); 
     } 
    }); 
} 

Pour votre information - j'ai ces clés dans mon fichier plist:

<key>NSCameraUsageDescription</key> 
<string>This app requires camera access to function properly.</string> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>This app requires photo library access to function properly</string> 
+0

Quel plugin utilisez-vous? Pouvez-vous fournir du code natif pour obtenir l'autorisation? – Sergey

+0

J'utilise le wrapper Ionic Native Diagnostic, qui utilise le plugin de diagnostic Cordova: https://ionicframework.com/docs/native/diagnostic/ – Dave

+0

Aucun de ces commentaires n'est utile, si vous avez une réponse réelle, s'il vous plaît ajouter comme réponse avec un exemple de code. – Dave

Répondre

1

Transforme des autorisations sur iOS sont un tas de balles et ils n'agissez pas de manière sensée. Si vous avez précédemment refusé l'accès à une autorisation, la demander à nouveau ne fait rien. Donc, vous devez dire à l'utilisateur d'aller manuellement et de le changer. BOITEUX.

Vous pouvez les envoyer à l'écran des réglages avec: diagnostic.switchToSettings()

Remise à zéro des autorisations en allant à:

Settings -> General -> Reset -> Reset Location & Privacy 

... fait l'application demander des autorisations en tant que nouvelle.