Невозможно открыть настройку с помощью expo с Linking.openURL ('app-settings') - PullRequest
0 голосов
/ 13 апреля 2019

Здравствуйте. Я попытался выполнить руководство на youtube о том, как заставить приложение открывать настройки местоположения, если пользователь не включил службы определения местоположения.Однако на его компьютере он работает (хотя он использует Android-эмулятор), но мой Iphone XS (который, я считаю, работает на последней версии IOS) ничего не делает.

Я пытался открыть просто настройку или даже ссылку в интернете, но она не работает

openSetting = () => {
    if(Platform.OS=='ios'){
      Linking.openURL('app-settings:')
    }
    else{
      IntentLauncherAndroid.startActivityAsync(
        IntentLauncherAndroid.ACTION_LOCATION_SOURCE_SETTINGS
      );
    }
    this.setState({openSetting:false});

  }
<Button onPress={() => this.setState({isLocationModalVisible:false, openSetting:true})}
          title ="Enable Location Services"/>

Ответы [ 2 ]

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

О, да, теперь отлично работает, спасибо большое, мужик! Однако сейчас у меня есть другая проблема, когда я захожу в настройки, чтобы переключить разрешение местоположения с никогда на всегда, и я возвращаюсь к приложению, которое говорит мне «Опыт требует разрешения», и хотя я говорю «Разрешить, экран не обновляется с местоположением». информация, которая постоянно отображается в моем сообщении об ошибке «В доступе к местоположению было отказано»
Я добавил Appstate. Я установил appState: AppState.currentState (я в основном следовал за реакцией на эту документацию)

appState: AppState.currentState
handleAppStateChange = nextAppState => {
    if(this.state.appState.match(/inactive|background/) && nextAppState === 'active'){
      console.log('App has come to the foreground');
      this._getLocationAsync();
    }
    this.setState({appState : nextAppState});
  };

Похоже, что я получаю местоположение, потому что, если я обновляю приложение, оно показывает мне координаты местоположения, но я должен обновить его. Это не меняется автоматически. Но теперь, если я переключу местоположение с всегда на никогда, оно автоматически обновится до отклоненного разрешения и покажет модальное изображение снова.

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

Я думаю, вам просто нужно вызвать функцию, вот и все. Я проверил ваш код, он отлично работает на обеих платформах

<Button onPress={() => this.openSetting()} title ="Enable Location Services"/>

Для вызова setState одновременно

<Button onPress={() => {this.openSetting();
        this.setState({isLocationModalVisible:false, openSetting:true})}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...