2012-01-05 23 views
7

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

मैंने ट्रैकिंग शुरू करने से पहले वाईफ़ाई उपलब्ध होने पर यह पता लगाने के लिए पहुंच योग्यता प्रश्नों का उपयोग किया है। समस्या यह है कि यदि वह क्वेरी वाईफ़ाई सक्षम होती है लेकिन नेटवर्क से कनेक्ट नहीं होती है, तो यह दिखाती है कि इंटरनेट वाईफ़ाई के माध्यम से पहुंच योग्य नहीं है, लेकिन सेटिंग एप में सेटिंग अक्षम होने पर यह संकेत नहीं है। इसका अर्थ यह है कि यदि उपयोगकर्ता चलना शुरू कर देता है और कनेक्शन को मध्य-रन किया जाता है, तो उन्हें जीपीएस या सेल नेटवर्क की बजाय वाईफ़ाई से स्थान संकेत मिलेगा। नतीजतन उन डेटा बिंदुओं पर सटीकता> 10 मीटर हो सकती है इसलिए मैं उस बिंदु को छोड़ना चाहता हूं। मुद्दा यह है कि वाईफाई पर उनके पास एक बड़ी खाली अवधि होगी जहां उनका संकेत दर्ज नहीं किया गया था।

तो मैं कैसे जांच सकता हूं कि वाईफ़ाई सक्षम है लेकिन डिस्कनेक्ट किया गया है?

मैंने अन्य सभी पहुंच योग्यता चर्चाओं को पढ़ा है जो मुझे मिल सकता है लेकिन यह एक अंतर है, जिसमें कई प्रतिक्रियाएं गलत तरीके से सुझाव देती हैं कि पहुंचने योग्यता बॉक्स से बाहर निकलती है।

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

+0

मैं इसे प्राप्त करने की कोशिश कर रहा था: http://stackoverflow.com/a/26238866/367677 – Asahi

उत्तर

2

यह पूछने के बाद से काफी समय हो गया है, लेकिन मैं अभी इस पर आया हूं।

ऐसा लगता है कि अगर आप ऐप्पल के नियमों का पालन करना चाहते हैं तो ऐसा करने का कोई तरीका नहीं है। sysctl और ioctl काम नहीं करेंगे क्योंकि कोई झंडे नहीं हैं जो आपको गीले वाईफाई सक्षम दिखाएंगे। उदाहरण के लिए यदि वाईफाई अक्षम है या वाईफाई सक्षम है लेकिन कनेक्ट नहीं है तो "यूपी" और "रनिंग" के लिए झंडे समान होंगे।

ऐप्पल का स्वयं का वाईफाई फ्रेमवर्क सीधे कर्नेल के साथ संवाद करने के लिए मच का उपयोग करता है और मुझे संदेह है कि ऐप्पल ऐपस्टोर में ऐसे कोड की अनुमति देगा।

0

यह संभव है, लेकिन समाधान अस्पष्ट और बदसूरत है। संक्षिप्त जवाब यह है कि यदि आप "awdl0" नाम से दो इंटरफेस देखते हैं तो वाईफाई सक्षम है, केवल एक और यह अक्षम है।

अधिक पूर्ण विवरण और नमूना कोड के लिए Better way to detect WiFi enabled/disabled on iOS? देखें।