2011-12-29 3 views
6

Есть ли возможность подключиться к IPhone подключенного Wi-Fi SSID с помощью Monotouch?MonoTouch WIFI SSID

Я нашел возможность проверить состояния Wi-Fi, но нет способа проверить SSID. https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs Так кто-нибудь знал способ? Спасибо за все комментарии

+1

Ниже приведен пример [пример использования Obj-C] [1]. Вы должны иметь возможность использовать аналогичный подход в MT. [1]: http://stackoverflow.com/questions/5198716/iphone-get-ssid-without-private-library – Jason

ответ

6

Вы можете сделать это, как пример кода, с которым связан @Jason. Но сейчас нет привязок для CaptiveNetwork в текущих версиях MonoTouch (но он будет включен в будущую бета-версию).

Тем временем вы можете скопировать-вставить следующий код внутри приложения, чтобы получить 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); 
     } 
    } 

UPDATE: Последние MonoTouch 5.2+ релизы включает поддержку CaptiveNetwork. Вышеприведенный код упрощен до:

using MonoTouch.SystemConfiguration; 

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

CopyCurrentNetworkInfo является устаревшим в MT 6.0.6. Вместо этого используйте TryCopyCurrentNetworkInfo. –

Смежные вопросы