2011-12-29 23 views
6

क्या मोनोटच के साथ कनेक्टेड वाईफ़ाई एसएसआईडी आईफोन पर जाने की संभावना है?मोनो टच वाईफ़ाई एसएसआईडी

मुझे वाई-फाई राज्यों की जांच करने की संभावना मिली है लेकिन एसएसआईडी की जांच करने का कोई तरीका नहीं है। https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs तो क्या किसी को कोई रास्ता पता था? सभी टिप्पणियों के लिए धन्यवाद

+1

यहां एक [उदाहरण ओब्जे-सी का उपयोग करके] [1] है। आप एमटी में एक समान दृष्टिकोण का उपयोग करने में सक्षम होना चाहिए। [1]: http://stackoverflow.com/questions/5198716/iphone-get-ssid-without-private-library – Jason

उत्तर

6

आप इसे जेसन से जुड़े नमूना कोड की तरह कर सकते हैं। लेकिन अभी मोनो टच के मौजूदा संस्करणों में कैप्टिवनेट के लिए कोई बाइंडिंग नहीं है (लेकिन इसे भविष्य में बीटा रिलीज में शामिल किया जाएगा)।

इस बीच आप एसएसआईडी प्राप्त करने के लिए अपने आवेदन के अंदर निम्नलिखित कोड को कॉपी-पेस्ट कर सकते हैं।

using System; 
    using System.Runtime.InteropServices; 
    using MonoTouch; 
    using MonoTouch.CoreFoundation; 
    using MonoTouch.Foundation; 
    using MonoTouch.ObjCRuntime; 

    [DllImport (Constants.SystemConfigurationLibrary)] 
    extern static IntPtr CNCopyCurrentNetworkInfo (IntPtr interfaceName); 

    static string GetSSID() 
    { 
     IntPtr scl = Dlfcn.dlopen (Constants.SystemConfigurationLibrary, 0); 
     try { 
      using (NSString en0 = new NSString ("en0")) { 
       using (NSDictionary dict = new NSDictionary (CNCopyCurrentNetworkInfo (en0.Handle))) { 
        using (NSString key = Dlfcn.GetStringConstant (scl, "kCNNetworkInfoKeySSID")) { 
         return dict [key].ToString(); 
        } 
       } 
      } 
     } 
     catch (EntryPointNotFoundException) { 
      // this is not available when running on the simulator 
      return String.Empty; 
     } 
     finally { 
      Dlfcn.dlclose (scl); 
     } 
    } 

अद्यतन: नवीनतम MonoTouch 5.2+ विज्ञप्ति CaptiveNetwork लिए समर्थन शामिल है। उपर्युक्त कोड को सरल बनाया गया है:

using MonoTouch.SystemConfiguration; 

static string GetSSID() 
{ 
    var dict = CaptiveNetwork.CopyCurrentNetworkInfo ("en0"); 
    return dict [CaptiveNetwork.NetworkInfoKeySSID].ToString(); 
} 
+2

CopyCurrentNetworkInfo मीट्रिक टन 6.0.6 में अब अप्रचलित है। इसके बजाय TryCopyCurrentNetworkInfo का उपयोग करें। –