ReactNative: как проверить, предоставил ли пользователь разрешение для gps - PullRequest
0 голосов
/ 25 апреля 2019

В iOS я проверяю, есть ли у приложения права доступа к gps при открытии приложения. Если нет, я показываю предупреждение об отмене или принятии, которое открывает меню настроек. Но я не могу найти способ проверить это, когда пользователь включил / выключил gps в меню настроек и вернулся в приложение. Я хочу дождаться, чтобы пользователь вернулся из настроек и проверил это снова.

Я использую navigator.geolocation.getCurrentPosition(), Permissions.request("location") и if (Permissions.canOpenSettings()){ Permissions.openSettings()...

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Я нашел обходной путь, он не проверяет его, когда пользователь возвращается, но открывает предупреждение прямо при открытии окна настроек, поэтому, когда он возвращается, он должен нажать Ok, и он проверяет его снова:

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 голосов
/ 25 апреля 2019

Вы можете использовать AppState и добавить прослушиватель, когда приложение снова активно, чтобы проверить, отказано ли в разрешении или нет.

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    //Check permission here
  };
...