Реагировать на обратный вызов разрешений для геолокации - PullRequest
0 голосов
/ 26 октября 2018

Я испытываю трудности с разрешениями и правильно получаю текущее местоположение на RN.

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

geolocation.requestAuthorization();

, который не возвращает обещание или не принимает обратный вызов, поэтому единственный реальный способ узнать, предоставлены ли мне разрешения или нет, - это повторно звонить

geolocation.getCurrentPosition();

и изучите его содержимое

Кажется, что это немного подкованно, поскольку setInterval - едва ли когда-нибудь ответ, поэтому я ищу лучший подход.

1 Ответ

0 голосов
/ 26 октября 2018

Попробуйте что-нибудь подобное и у меня это сработает.

 (async () => {
       { try {
        const granted = await PermissionsAndroid.request(
          PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
          {
            'title': 'Your App',
            'message': 'Allow app to access your location '
          }
        )
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          Geolocation.getCurrentPosition(
            (position) => {
                console.log(position);
               Geocoder.geocodePosition({lat: position.coords.latitude, lng: position.coords.longitude})
               .then(res => {
                this.setState({
                  locationResult: res[0].formattedAddress
                });
            })
            },
            (error) => {
                // See error code charts below.
                console.log(error.code, error.message);
            },
            { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 }
        );
        } else {
          alert("Location permission denied");
        }
      } catch (err) {
        console.log("No Access  to location" + err);
      }
    }
  })();

LocationResult в состоянии будет содержать детали адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...