2017-01-22 8 views
7

सक्षम करने के लिए प्रतिक्रिया-मूल जांच और प्रोप उपयोगकर्ता, मैं यह जांचने के लिए देख रहा हूं कि मेरा एप्लिकेशन शुरू होने पर डिवाइस पर नेटवर्क या जीपीएस सक्षम है या नहीं। और यदि वे अक्षम हैं तो उपयोगकर्ता इसे सक्षम करने के लिए संकेत दें।नेटवर्क/जीपीएस

क्या यह वास्तविक-मूल में है ?, और क्या कोई वर्ग या उपकरण है जो इस प्रकार के संवादों में मदद कर सकता है?

उत्तर

6

तो मैं अपने स्वयं के प्रश्न का उत्तर देना शुरू कर रहा हूं।

जीपीएस के लिए:

वहाँ एक समझदार समाधान लगता है। यदि भौगोलिक स्थान अनुरोध है तो आईओएस मूल रूप से अनुरोध करता है। और 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) 
    } 
} 
+1

"आईओएस मूल रूप से अनुरोध करता है कि कोई भौगोलिक स्थान अनुरोध है" - यह केवल पहले अनुरोध पर होता है। बाद के अनुरोधों पर वे बस कोड से असफल हो जाते हैं और किसी संवाद संवाद को प्रदर्शित नहीं करते हैं। आईओएस 8 के साथ एक आईफोन एसई पर परीक्षण किया गया और त्रुटि संदेश मुझे यह मिला "स्थान सेवाएं अक्षम।" – Vee6

1

आईओएस (> = आईओएस 8?) और एंड्रॉइड के हाल के संस्करणों में आप ऐप अनुमति संवाद दिखा सकते हैं और उपयोगकर्ताओं को कैमरा और स्थान जैसी अनुमतियां चालू/बंद कर सकते हैं। ऐसा करने के लिए एक मूल मॉड्यूल है: https://github.com/yonahforst/react-native-permissions

+3

उत्तर के लिए हैताओ धन्यवाद। लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं। यह अनुमतियों के बारे में कोई प्रश्न नहीं है निष्पादन समय पर सक्षम या सक्षम हार्डवेयर क्षमताओं का एक प्रश्न नहीं है (अनुमतियां पहले से मौजूद हैं)। – Kanekotic

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^