कहने वाली पहली बात यह है कि पृष्ठभूमि में चलते समय स्थान अपडेट प्राप्त करने वाले फ़ोनगैप ऐप को पूरी तरह से संभव है, लेकिन मामूली नहीं है। मैंने इसे स्वयं किया है और एंड्रॉइड और आईओएस प्लेटफ़ॉर्म दोनों पर ऐप्स जारी किए हैं।
यदि आपको सटीक और नियमित स्थिति अपडेट की आवश्यकता है, तो मैं लक्ष्य डिवाइस पर जीपीएस रिसीवर का उपयोग करने का सुझाव दूंगा। फोनगैप में, आप स्थिति अपडेट का अनुरोध करते समय "उच्च अधिकार" ध्वज को सेट कर सकते हैं। के रूप में और जब डिवाइस जीपीएस रिसीवर से अपडेट प्राप्त 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।
आशा है कि इससे मदद मिलती है!
आपके उत्तर के लिए धन्यवाद, मुझे हर 5 मिनट में स्थान अपडेट करने के लिए डिवाइस की आवश्यकता होगी, मैं इसे नियंत्रित कर सकता हूं, है ना? इसे तब तक काम करना चाहिए जब तक डिवाइस में इंटरनेट कनेक्शन न हो। – amarruffo
यदि आप एक निश्चित अंतराल पर स्थिति को अपडेट करना चाहते हैं तो आप getCurrentPosition() को कॉल करने के लिए टाइमआउट का उपयोग कर सकते हैं, उदा। 'setTimeout (function() {navigator.geolocation.getCurrentPosition (सफलता कॉलबैक, त्रुटि कॉलबैक, {enableHighAccuracy: true})}, 5 * 60 * 1000)' यदि डिवाइस में जीपीएस रिसीवर है, तो आपको स्थिति प्राप्त करने के लिए इंटरनेट कनेक्शन की आवश्यकता नहीं है अद्यतन। – DaveAlden
क्या होता है मुझे किसी वेब सेवा के माध्यम से डेटाबेस पर डालने वाले स्थान की आवश्यकता होती है, क्या यह पृष्ठभूमि से काम करने जा रहा है? मैंने कहीं कहीं पढ़ा है कि वेब सेवा को कॉल करने वाला नहीं है, इस बारे में कोई विचार? आपकी सहायता के लिए धन्यवाद. – amarruffo