2013-07-11 9 views
15

का उपयोग कर डिवाइस स्थान (आईओएस और एंड्रॉइड) डिवाइस को ट्रैक करने के लिए कैसे करें मैं जानना चाहता हूं कि कोई उपयोगकर्ता कब आ जाता है या कुछ स्थान छोड़ देता है। मैं वायरलेस नेटवर्क (मोबाइल उपकरणों की जांच) का उपयोग करके ऐसा करने की कोशिश कर रहा था, लेकिन मैं कई कारणों से नहीं कर सका।फोनगैप

1) मुझे वास्तविक समय अपडेट या जानकारी के हर 1-5 मिनट की आवश्यकता है कि कौन से डिवाइस जुड़े हुए हैं और कौन से डिवाइस अभी डिस्कनेक्ट हैं।

2) मेरे पीसी से उसी नेटवर्क पर मेरे पीसी से बहुत अधिक पिंग था (अभी भी क्यों नहीं पता)।

अब मैं आईओएस पर निलंबित किए गए फोनगैप एप्लिकेशन (पृष्ठभूमि में चल रहा) से भौगोलिक स्थान का उपयोग करके या एंड्रॉइड में पृष्ठभूमि में चलना चाहता हूं।

किसी भी मदद की सराहना की जाएगी।

उत्तर

24

कहने वाली पहली बात यह है कि पृष्ठभूमि में चलते समय स्थान अपडेट प्राप्त करने वाले फ़ोनगैप ऐप को पूरी तरह से संभव है, लेकिन मामूली नहीं है। मैंने इसे स्वयं किया है और एंड्रॉइड और आईओएस प्लेटफ़ॉर्म दोनों पर ऐप्स जारी किए हैं।

यदि आपको सटीक और नियमित स्थिति अपडेट की आवश्यकता है, तो मैं लक्ष्य डिवाइस पर जीपीएस रिसीवर का उपयोग करने का सुझाव दूंगा। फोनगैप में, आप स्थिति अपडेट का अनुरोध करते समय "उच्च अधिकार" ध्वज को सेट कर सकते हैं। के रूप में और जब डिवाइस जीपीएस रिसीवर से अपडेट प्राप्त watchPosition() फ़ंक्शन नई स्थिति के बारे में जानकारी प्रदान करेंगे, ताकि आप इसे कुछ इस तरह का उपयोग करें:

navigator.geolocation.watchPosition(successCallback, errorCallback, { 
    enableHighAccuracy: true, 
    timeout: 10000, 
    maximumAge: 0 
}); 

अधिक जानकारी के लिए Phonegap geolocation API documentation देखें (अनुमतियाँ कि आवश्यक हैं ध्यान दें एंड्रॉइड और आईओएस पर यह काम करने के लिए)।

एंड्रॉइड या आईओएस पर पृष्ठभूमि में अपना ऐप चलाने के लिए आपको अपने संबंधित देशी विकास वातावरण स्थापित करने की आवश्यकता होगी: एंड्रॉइड के लिए ग्रहण, आईओएस के लिए एक्सकोड। आप Phonegap Build का उपयोग करने में सक्षम नहीं होंगे क्योंकि दोनों मामलों में इसे कार्य करने के लिए कस्टम सेटिंग्स की आवश्यकता है। इसे कैसे करें के लिए Phonegap platform guides देखें।

एंड्रॉइड पर पृष्ठभूमि में अपना ऐप चलाने के लिए, आपको या तो एक कस्टम एंड्रॉइड सेवा लिखनी होगी, या आप जो कर सकते हैं वह कर सकते हैं और "आंशिक वाकेलॉक" (see here) प्राप्त करने के लिए फ़ोनगैप प्लगइन का उपयोग कर सकते हैं। ऐप पृष्ठभूमि में चल रहा है और स्क्रीन बंद होने पर स्थिति अपडेट प्राप्त करता है। ध्यान दें कि इस प्लगइन का original version पुराना है और फोनगैप के हाल के संस्करणों के साथ काम नहीं करता है, और आंशिक वाकेलॉक्स का भी समर्थन नहीं करता है। हालांकि, मैंने इसे अपने स्वयं के उपयोग के लिए अद्यतन और विस्तारित किया है: आप this question के उत्तर में इसके लिए स्रोत कोड पा सकते हैं।

आईओएस पर पृष्ठभूमि में अपना ऐप चलाने के लिए, आपको चीजों को थोड़ा अलग करने की ज़रूरत है; आपको प्लगइन की आवश्यकता नहीं है, बस एक प्रोजेक्ट सेटिंग।

आप या तो मैन्युअल रूप से प्रोजेक्ट को संपादित कर सकते हैं। प्लिस्ट करें और "स्थान" के मान के साथ कुंजी "UIBackgroundModes" कुंजी जोड़ें या XCode में अपनी प्रोजेक्ट खोलने के साथ, "आवश्यक पृष्ठभूमि मोड" कुंजी को " स्थान अपडेट के लिए ऐप रजिस्टर "। यह आईओएस को जेएस कॉलबैक फ़ंक्शन को ट्रिगर करने के लिए करेगा जब आपने watchPosition() के साथ पंजीकृत किया है, प्रत्येक बार एक स्थान अपडेट प्राप्त होता है। आईओएस परियोजना कुंजी और background modes के बारे में अधिक जानकारी के लिए See here

आशा है कि इससे मदद मिलती है!

+0

आपके उत्तर के लिए धन्यवाद, मुझे हर 5 मिनट में स्थान अपडेट करने के लिए डिवाइस की आवश्यकता होगी, मैं इसे नियंत्रित कर सकता हूं, है ना? इसे तब तक काम करना चाहिए जब तक डिवाइस में इंटरनेट कनेक्शन न हो। – amarruffo

+1

यदि आप एक निश्चित अंतराल पर स्थिति को अपडेट करना चाहते हैं तो आप getCurrentPosition() को कॉल करने के लिए टाइमआउट का उपयोग कर सकते हैं, उदा। 'setTimeout (function() {navigator.geolocation.getCurrentPosition (सफलता कॉलबैक, त्रुटि कॉलबैक, {enableHighAccuracy: true})}, 5 * 60 * 1000)' यदि डिवाइस में जीपीएस रिसीवर है, तो आपको स्थिति प्राप्त करने के लिए इंटरनेट कनेक्शन की आवश्यकता नहीं है अद्यतन। – DaveAlden

+2

क्या होता है मुझे किसी वेब सेवा के माध्यम से डेटाबेस पर डालने वाले स्थान की आवश्यकता होती है, क्या यह पृष्ठभूमि से काम करने जा रहा है? मैंने कहीं कहीं पढ़ा है कि वेब सेवा को कॉल करने वाला नहीं है, इस बारे में कोई विचार? आपकी सहायता के लिए धन्यवाद. – amarruffo