2013-07-15 2 views
8

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

+2

आयात करने के लिए करना होगा: http://stackoverflow.com/questions/5198716/iphone-get-ssid-without-private-library/7041017#7041017 – Larme

+0

यह वह जगह है वर्तमान में कनेक्ट वाई-फाई एसएसआईडी प्राप्त करने के लिए। मुझे उस ईवेंट को कैप्चर करने की आवश्यकता है जहां उपयोगकर्ता वाई-फाई नेटवर्क से कनेक्ट होता है या वर्तमान में कनेक्ट किए गए वाई-फाई नेटवर्क को किसी अन्य में बदल देता है। – Shanaka

उत्तर

6

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

- (id)fetchSSIDInfo { 
    NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); 
    NSLog(@"Supported interfaces: %@", ifs); 
    id info = nil; 
    NSString *ifnam = @""; 
    for (ifnam in ifs) { 
     info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); 
     NSLog(@"%@ => %@", ifnam, info); 
     if (info && [info count]) { break; } 
    } 
    if ([info count] >= 1 && [ifnam caseInsensitiveCompare:prevSSID] != NSOrderedSame) { 
      // Trigger some event 
      prevSSID = ifnam; 
    } 

    return info; 
} 

कुछ AppDelegate में applicationDidFinishLoading

NSTimer *ssidTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(fetchSSIDInfo) userInfo:nil repeats:YES]; 

में बुरा

है उसके जैसा। मैं यह जांच नहीं सकता कि कोड टाइपो मुक्त है या नहीं, क्योंकि मैक के सामने नहीं है, लेकिन यह बहुत अलग नहीं होना चाहिए

+0

हां इस तरह मैंने इसे पहले से ही किया है। मैं सिर्फ यह जांचना चाहता था कि ऐसा करने का कोई तरीका है या नहीं। उत्तर – Shanaka

+0

के लिए धन्यवाद, मुझे नहीं पता कि। शायद कुछ निजी विधि है जो ऐप्पल उपयोग कर सकती है, लेकिन यदि आप इसका इस्तेमाल करते हैं, तो आपको खारिज कर दिया जाएगा। लेकिन खुद को लिखना बहुत जटिल नहीं है। – MZimmerman6

+0

यह दस्तावेज है https://developer.apple.com/LIBRARY/ios/documentation/SystemConfiguration/Reference/CaptiveNetworkRef/index.html#//apple_ref/c/func/CNCopyCurrentNetworkInfo – Andy

1

आप सिस्टम कॉन्फ़िगरेशन चाहते हैं, जिसमें नेटवर्किंग परिवर्तनों के सभी प्रकारों पर अधिसूचनाएं देखने की सुविधा है।

2

आप अपने वाईफाई कनेक्शन से विवरण प्राप्त कर सके:

- (NSDictionary *)getConnectionDetails 
{ 
    NSDictionary *connectionDetails = [NSDictionary dictionary]; 
    CFArrayRef myArray = CNCopySupportedInterfaces(); 
    if (myArray) { 
     CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 
     connectionDetails = (__bridge_transfer NSDictionary*)myDict; 
    } 
    return connectionDetails; 
} 

और फिर अगर जांच [connectionDetails valueForKey:@"BSSID"] आप BSSID मिल जाएगा।

इसके अलावा, कृपया ध्यान दें कि आप उस के साथ हो सकता है कि #import <SystemConfiguration/CaptiveNetwork.h>