0
votes

Réagir Natif: comment vérifier si l'utilisateur a accordé la permission à GPS

Dans iOS, je vérifie si l'application dispose d'autorisations pour accéder au GPS lors de l'ouverture de l'application. Sinon, je montre une alerte pour annuler ou accepter, ce qui ouvre le menu Paramètres. Mais je ne trouve pas un moyen de vérifier une fois que l'utilisateur a activé / désactivé le GPS dans le menu Paramètres et retourne à l'application. Je tiens à attendre que l'utilisateur revenait des paramètres et de vérifier à nouveau.

J'utilise navigator.geolocouplacement.getCurrentPosition () , autorisations.Request ("emplacement") et if (autorisations.canopensettings ()) { Permissions.opensettings () ...


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser AppState et ajouter un auditeur lorsque l'application est à nouveau active pour vérifier si la permission est refusée ou non. xxx


0 commentaires

0
votes

J'ai trouvé une solution de contournement, cela ne le regarde pas lorsque l'utilisateur revient, mais ouvre une alerte à droite lorsque la fenêtre de paramètres est ouverte, alors lorsqu'il y retourne, il doit cliquer sur OK et qu'il vérifie à nouveau:

componentDidMount() {
    this.checkPermissions();
  }

checkPermissions(){
    Permissions.check("location").then(resp => { // if resp === "denied" alert to open settings }
}

openSettings(){if (Permissions.canOpenSettings()) {
      Permissions.openSettings().then(this.renderReloadAlert());
    }}

renderReloadAlert() {
    const s = strings.initial;
    Alert.alert(
      s.alertReloadTitle,
      s.alertReloadBody,
      [
        {
          text: s.alertReloadOk,
          onPress: () => this.checkPermissions()
        }
      ],
      { cancelable: false }
    );
  }


0 commentaires

0
votes

Si vous utilisez Expo pour votre application, vous pouvez appeler getpermissionsasync () code>

S'il retourne faux, vous pouvez essayer d'appeler quelque chose comme ceci: P>

const checkForLocationPermission = async () => {
        const result = await getPermissionsAsync();
        if (result.status === 'granted'){
            return true
        } else {
            const response = requestPermissionsAsync();
            if (response.status === 'granted'){
                return true;
            }
        }
        return false
    }


0 commentaires