2011-12-29 12 views
6

là có khả năng để có được trên một IPhone kết nối WIFI SSID với Monotouch?MonoTouch WIFI SSID

Tôi đã tìm thấy khả năng kiểm tra các quốc gia Wi-Fi nhưng không có cách nào để kiểm tra SSID. https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs Vì vậy, có ai biết cách nào không? Cảm ơn tất cả các nhận xét

+1

Đây là [ví dụ sử dụng Obj-C] [1]. Bạn sẽ có thể sử dụng một cách tiếp cận tương tự trong MT. [1]: http://stackoverflow.com/questions/5198716/iphone-get-ssid-without-private-library – Jason

Trả lời

6

Bạn có thể làm điều này giống như mã mẫu mà @Jason liên kết đến. Nhưng hiện tại không có sự ràng buộc nào cho CaptiveNetwork trong các phiên bản hiện tại của MonoTouch (nhưng nó sẽ được đưa vào bản phát hành beta trong tương lai).

Trong thời gian chờ đợi, bạn có thể sao chép-dán mã sau vào trong ứng dụng của mình để nhận SSID.

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); 
     } 
    } 

CẬP NHẬT: Mới nhất MonoTouch 5.2+ phiên bản bao gồm hỗ trợ cho CaptiveNetwork. Mã trên được đơn giản hóa thành:

using MonoTouch.SystemConfiguration; 

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

CopyCurrentNetworkInfo tại là lỗi thời trong MT 6.0.6. Thay vào đó hãy sử dụng TryCopyCurrentNetworkInfo. –