2013-02-14 13 views
8

यह tweak के लिए है, इसलिए लक्ष्य जेलब्रोकन डिवाइस है, और ऐप स्टोर नहीं है। मैंने SBWiFiManager में विभिन्न विधियों को जोड़ने की कोशिश की है, लेकिन वे या तो वाईफाई की ताकत बदलती है (इसलिए लगातार) या नेटवर्क बदलने के बाद काफी देरी के बाद।वाईफ़ाई नेटवर्क बदलते समय आईफोन अधिसूचना

क्या कोई सूचना प्राप्त करने के लिए कोई अन्य तरीका है (या हुक करने के लिए एक और तरीका) वाईफ़ाई नेटवर्क में परिवर्तन आया है?

मुझे पता है कि आप वर्तमान एसएसआईडी को सार्वजनिक एपीआई के साथ प्राप्त कर सकते हैं, लेकिन जब इसे बदलता है तो मुझे बताया जाना चाहिए।

+0

+1 एक जेल्रैक ट्विक लिखने के लिए +1! – Anil

उत्तर

14

ऐसा करने का एक तरीका कोर फाउंडेशन डार्विन अधिसूचना केंद्र से com.apple.system.config.network_change ईवेंट सुनना है। घटना के लिए

रजिस्टर:

static void onNotifyCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) 
{ 
    NSString* notifyName = (NSString*)name; 
    // this check should really only be necessary if you reuse this one callback method 
    // for multiple Darwin notification events 
    if ([notifyName isEqualToString:@"com.apple.system.config.network_change"]) { 
     // use the Captive Network API to get more information at this point 
     // https://stackoverflow.com/a/4714842/119114 
    } else { 
     NSLog(@"intercepted %@", notifyName); 
    } 
} 

कैसे कैप्टिव नेटवर्क एपीआई का उपयोग करने उदाहरण के लिए, वर्तमान SSID पाने के लिए पर my link to another answer देखें:

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center 
           NULL, // observer 
           onNotifyCallback, // callback 
           CFSTR("com.apple.system.config.network_change"), // event name 
           NULL, // object 
           CFNotificationSuspensionBehaviorDeliverImmediately); 

यहां नमूने कॉलबैक है।

ध्यान दें कि यद्यपि मैंने जिस फोन पर इसका परीक्षण किया है वह जेलब्रोकन (आईओएस 6.1) है, मुझे नहीं लगता कि इसे सही तरीके से काम करने के लिए जेलब्रैकिंग की आवश्यकता है। यह निश्चित रूप से सामान्य सैंडबॉक्स क्षेत्र (/var/mobile/Applications/*) के बाहर स्थापित होने की आवश्यकता नहीं है।

पीएस मैंने यह जानने के लिए पर्याप्त रूप से पर्याप्त परीक्षण नहीं किया है कि यह घटना झूठी सकारात्मक (नेटवर्क परिवर्तन की आपकी परिभाषा के आधार पर) देती है या नहीं। हालांकि, यह केवल कुछ राज्य वैरिएबल को स्टोर करने के लिए पर्याप्त है, जो पिछले नेटवर्क के एसएसआईडी के बराबर है, और जब भी यह घटना आती है, तो वर्तमान की तुलना करें।

+0

धन्यवाद !!! (बीटीडब्ल्यू मैंने बस लोगों को रोकने के लिए जेलबैक के बारे में थोड़ा सा कहा कि यह ऐपस्टोर द्वारा खारिज कर दिया जाएगा)। जिज्ञासा से आपको अधिसूचना का नाम कैसे मिला? –

+3

@ जोनाथन, क्या आप एक नया सवाल पूछ सकते हैं, जो सामान्य तकनीकों के बारे में पूछताछ करता है कि यह निर्धारित करने के लिए उपयोग की जाती है कि कौन सी सूचनाएं उपयोग की जाती हैं? मैं पूछता हूं, न केवल इसलिए कि मैं कुछ और प्रतिनिधि बिंदुओं को निचोड़ना चाहता हूं, लेकिन क्योंकि (ए) मैं किसी टिप्पणी में जवाब को फिट नहीं कर सकता, और (बी) यह दूसरों के लिए अधिक उपयोगी (और खोजने योग्य) होगा यदि सवाल उचित रूप से शीर्षक, टैग, और वर्णित है। टिप्पणियां केवल छोटी प्रतिक्रियाओं के मुकाबले ज्यादा नहीं हैं। आप इन तकनीकों के लिए इस तरह के एक कारण के * विशिष्ट * उदाहरण के रूप में निश्चित रूप से * इस लिंक के लिए * लिंक * कर सकते हैं। – Nate

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