TypeError: undefined не является объектом (оценка 'navigator.geolocation.requestAuthorization') - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь позвонить:

`navigator.geolocation.requestAuthorization();`

для запроса разрешения на геолокацию.

Но это приводит к ошибке при запуске в симуляторе iOS

Это сработалов один прекрасный момент, но остановился.Я попытался удалить и создать новый проект.Я также пытался удалить / переустановить узел и response-native-cli.

import React, {Fragment, Component} from 'react';
import {
  SafeAreaView,
  StyleSheet,
  ScrollView,
  View,
  Text,
  StatusBar,
} from 'react-native';

import {
  Header,
  LearnMoreLinks,
  Colors,
  DebugInstructions,
  ReloadInstructions,
} from 'react-native/Libraries/NewAppScreen';

export default class App extends Component {

    constructor(props)
    {
        super(props);

        navigator.geolocation.requestAuthorization();
    }

    render() {

        return (

                <View style={styles.MainContainer}>
                <SafeAreaView style={{flex: 1, backgroundColor: '#fff'}}>
                <Text style={styles.sectionTitle}>Hello World!</Text>
                </SafeAreaView>
                </View>

                );
    }
}

const styles = StyleSheet.create({
  MainContainer :{
     justifyContent: 'center',
     flex:1,
     margin: 5,
     marginTop: (Platform.OS === 'ios') ? 20 : 0,
  },
  sectionTitle: {
    fontSize: 24,
    fontWeight: '600',
    color: Colors.black,
  },
});

Я получаю эту ошибку:

[error][tid:com.facebook.react.JavaScript] TypeError: undefined is not an object (evaluating 'navigator.geolocation.requestAuthorization')

This error is located at:
    in App (at renderApplication.js:40)
    in RCTView (at View.js:35)
    in View (at AppContainer.js:98)
    in RCTView (at View.js:35)
    in View (at AppContainer.js:115)
    in AppContainer (at renderApplication.js:39)

1 Ответ

0 голосов
/ 05 июля 2019

геолокация была извлечена из оригинальной версии .60. Если вам нужно альтернативное решение

установить response-native-community / geolocation

npm install @react-native-community/geolocation --save


react-native link @react-native-community/geolocation

тогда

IOS

Вам нужно включить ключ NSLocationWhenInUseUsageDescription в Info.plist, чтобы включить геолокацию при использовании приложения. Чтобы включить геолокацию в фоновом режиме, необходимо включить ключ «NSLocationAlwaysUsageDescription» в Info.plist и добавить местоположение в качестве фонового режима на вкладке «Возможности» в Xcode.

Android

Чтобы запросить доступ к местоположению, вам нужно добавить следующую строку в AndroidManifest.xml* 1021 вашего приложения

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

использование

import Geolocation from '@react-native-community/geolocation';

Geolocation.getCurrentPosition(info => console.log(info));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...