तो मैं अपने स्वयं के प्रश्न का उत्तर देना शुरू कर रहा हूं।
जीपीएस के लिए:
वहाँ एक समझदार समाधान लगता है। यदि भौगोलिक स्थान अनुरोध है तो आईओएस मूल रूप से अनुरोध करता है। और Android के लिए इस मूल रूप से समर्थित नहीं है लेकिन किसी को उस (https://github.com/webyonet/react-native-android-location-services-dialog-box)
के लिए एक मॉड्यूल पैदा कर दी है तो मेरे कार्रवाई निर्माता में मैं अगले कोड कहा:
if(Platform.OS === 'android')
LocationServicesDialogBox.checkLocationServicesIsEnabled({
message: "<h2>Use Location?</h2> \
This app wants to change your device settings:<br/><br/>\
Use GPS for location<br/><br/>",
ok: "YES",
cancel: "NO"
}).then(() => {
locationTracking(dispatch, getState, geolocationSettings)
})
नेटवर्क के लिए: कोई मूल समर्थन नहीं है न तो मैं जांच करने के लिए अपना खुद का एक्शन निर्माता कर रहा हूं।
export function networkCheck(){
return (dispatch) => {
const dispatchNetworkState = (isConnected) => dispatch({
type: types.NETWORK_STATE,
state: isConnected
})
const handle =() => NetInfo.isConnected.fetch().done(dispatchNetworkState)
NetInfo.isConnected.addEventListener('change', handle);
}
}
एक छोटी सी अतिरिक्त:
जीपीएस के लिए मैं इस जोड़े गये कार्य के बीच में उपयोगकर्ता हो जाता है की जाँच करें और जीपीएस निष्क्रिय करने के लिए।
export function locationCheck(geolocationSettings = {enableHighAccuracy: true, timeout: 20000, maximumAge: 10000, distanceFilter:10}){
return (dispatch) => {
navigator.geolocation.watchPosition(
() => {
dispatch({
type: types.LOCATION_STATE,
state: true
})
},
() => {
dispatch({
type: types.LOCATION_STATE,
state: false
})
},
geolocationSettings)
}
}
"आईओएस मूल रूप से अनुरोध करता है कि कोई भौगोलिक स्थान अनुरोध है" - यह केवल पहले अनुरोध पर होता है। बाद के अनुरोधों पर वे बस कोड से असफल हो जाते हैं और किसी संवाद संवाद को प्रदर्शित नहीं करते हैं। आईओएस 8 के साथ एक आईफोन एसई पर परीक्षण किया गया और त्रुटि संदेश मुझे यह मिला "स्थान सेवाएं अक्षम।" – Vee6