These two methods to fetch location are common:
export const getLocation = (options) => {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
export const getLocationData = async (): Promise<LocationData> => {
let locationData;
if (navigator.geolocation && navigator.geolocation.getCurrentPosition) {
try {
console.log("ENTERED");
locationData = await getLocation({ enableHighAccuracy: true });
console.log("success locationdata", locationData);
} catch (e) {
locationData = null;
console.log("catch locationdata", e);
}
}
const postLocationData= locationData ? {
timestamp: locationData.timestamp,
accuracy: locationData.coords ? locationData.coords.accuracy : 0,
latitude: locationData.coords ? locationData.coords.latitude : 0,
longitude: locationData.coords ? locationData.coords.longitude : 0
} : null;
return postLocationData;
}
This method is a different component
import { getLocationData } from '../../CommonMethods';
async componentDidMount() {
let locationData = await getLocationData();
this.props.requestGameList(null, null, locationData);// requestGameList();
this.props.requestContentCard(locationData);// request content cards
}
У меня есть некоторые игры, основанные на GeoLocation, и некоторые, не основанные на GeoLocation, которые должны быть загружены, и это работает, когда служба определения местоположения включена, но когда служба определения местоположения выключена, Уничтожение браузера (Safari) с помощьюдвойное нажатие кнопки «Домой» и «Проведение по браузеру» не приводит к загрузке игр в браузере. Выполняя console.log, я вижу поток до console.log («ENTERED»); после этого я предполагаю, что он либо должен быть успешным, либо отклонен, однако в моем случае (т. Е. Когда установлена служба определения местоположения)в положение OFF) должен отклонить и перейти к разделу catch и вернуть null. Я вижу console.log ("ENTERED"), но после этого ничего не происходит. Нить ловить не собираюсь. Но тот же код работает с тем же сценарием в Chrome в iOS. В чем может быть причина этого и почему браузер Safari ведет себя по-другому?