web-dev-qa-db-fra.com

L'application se bloque lors de l'activation de l'accès à la caméra à partir des paramètres iOS 8

Je développe une application pour iPhone qui utilise l'appareil photo pour numériser des codes à barres et prendre des photos. Lorsque nous n'avons pas d'accès à la caméra et que l'utilisateur active l'accès à la caméra, l'application se bloque et la ré-ouvre.

Pouvez-vous m'aider à résoudre ce problème?

Merci d'avance.

48
Nuraiz

La première fois que vous accédez à la caméra, le système d'exploitation affiche automatiquement l'invite d'autorisation. Que l'utilisateur autorise ou refuse l'invite, votre application continue de s'exécuter. Si l'utilisateur modifie à un moment donné les autorisations du carnet d'adresses, des calendriers, des rappels, de l'appareil photo ou des photos, iOS va SIGKILL l'application. Il prend cette mesure pour s'assurer que l'application ne dispose plus de données précédemment autorisées. Lorsque l'utilisateur revient de l'application Paramètres à l'application tierce, celle-ci est lancée à partir de zéro et présente désormais le statut d'autorisation Refusé. À la suite de ce comportement, j'ai deux recommandations:

  1. Détectez quand l'autorisation est refusée et présentez une interface utilisateur expliquant que l'utilisateur doit basculer l'autorisation de l'application Paramètres. Dans iOS 8, vous pouvez les amener directement dans l'entrée de votre application avec [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]].

  2. Implémentez une sorte de restauration d'état de sorte que lorsque l'application est terminée et relancée, l'utilisateur retourne à la vue/à la fonctionnalité précédemment visible.

Source (nécessite un compte développeur)

69
jszumski

Vos recommandations sont correctes. Je présente une vue d'alerte demandant à l'utilisateur de se rendre dans l'application Paramètres pour modifier l'autorisation de la caméra et des contacts s'il les avait précédemment refusées. Le problème pour moi est avec votre recommandation n ° 2. Je suis au cœur d'un processus d'inscription et j'ai collecté des informations telles que nom, email, date de naissance. Ensuite, j'ai un écran "Request for Permissions". Lorsque l'application est relancée après avoir été supprimée, je n'ai plus cette information d'inscription. Je suppose que je peux enregistrer les informations d’inscription (sur le téléphone) avant de présenter la vue des alertes, puis, lors du redémarrage de l’application, vérifier s’il existe des informations d’inscription précédemment enregistrées. Si tel est le cas, revenez à l'écran qui vous a demandé des autorisations, puis supprimez les informations d'inscription enregistrées.

0
Sidd Rajput