navigator.geolocation.getCurrentPosition在iOS模拟器中没有使用React Native触发

时间:2018-05-19 11:34:52

标签: react-native geolocation ios-simulator react-native-maps

在Android模拟器中,下面的代码工作正常,但在iOS中,它甚至没有进入navigator.geolocation.getCurrentPosition。

我已通过调试菜单更新了我的模拟器的自定义位置,但如果它甚至没有进入navigator.geolocation.getCurrentPosition,我有点迷失。

constructor(props) {
    super(props);
    this.state = {
        focusedLocation: {
            latitude: 37.4219999,
            longitude: -122.0862462,
            latitudeDelta: 0.0022,
            longitudeDelta: Dimensions.get("window").width / Dimensions.get("window").height * 0.0122,
        },
    };
}    

componentDidMount() {

    console.log("did mount: ", this.state.grumblersLocation.latitude); //triggers iOS and Android

    navigator.geolocation.getCurrentPosition(pos => {
            console.log("raw pos lat: ", pos.coords.latitude); //triggers in Android only
            this.setState({
                focusedLocation: {
                    ...this.state.grumblersLocation,
                    latitude: pos.coords.latitude,
                    longitude: pos.coords.longitude
                }
            }, () => {
                console.log("state after pos lat: ", this.state.grumblersLocation.latitude);  //triggers in Android only
            });

        },
        err => {
            console.log("Fetching the Position failed: ", err); //Not triggering on either
        });

}

1 个答案:

答案 0 :(得分:0)

我无法回答为什么通常会询问您是否允许应用访问您的位置的弹出窗口从未出现过。但要在iOS中修复它我需要:

  1. 点击模拟器上的主页按钮
  2. 单击“设置” 应用>隐私>位置服务>我的应用
  3. 然后确保"使用时 App"被检查
  4. enter image description here

    这解决了它,但我仍然想知道为什么警报从未出现在第一位......