6

モノタッチで接続されたWIFISSIDをiPhoneに乗せる可能性はありますか?

Wi-Fiの状態を確認する可能性を見つけましたが、SSIDを確認する方法がありません。 https://github.com/xamarin/monotouch-samples/blob/master/ReachabilitySample/reachability.cs では、誰かが方法を知っていましたか?すべてのコメントをありがとう

4

1 に答える 1

6

@Jasonがリンクしたサンプルコードのようにこれを行うことができます。ただし、現時点では、MonoTouchの現在のバージョンにはCaptiveNetworkのバインディングはありません(ただし、将来のベータリリースに含まれる予定です)。

それまでの間、アプリケーション内に次のコードをコピーして貼り付け、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);
        }
    }

更新:最新のMonoTouch 5.2以降のリリースには、のサポートが含まれていCaptiveNetworkます。上記のコードは次のように簡略化されています。

using MonoTouch.SystemConfiguration;

static string GetSSID ()
{
    var dict = CaptiveNetwork.CopyCurrentNetworkInfo ("en0");
    return dict [CaptiveNetwork.NetworkInfoKeySSID].ToString ();
}
于 2012-01-12T21:05:47.190 に答える