在 IOS 12- Xamarin 上获取已连接 WIFI 的 SSID(针对 iOS 13 进行了更新)

Getting the SSID of the CONNECTED WIFI on IOS 12- Xamarin (Updated for iOS 13)

我可以将已连接 wifi 的 ssid 获取到我的 iPhone。安装 Xcode 10 并为 Mac 和 Visual Studio 2017 更新 Visual Studio 后,它 return 给我一个空的 ssid。

这是我获取 ssid 的代码:

        public override string GetCurrentWiFi()
    {
        String ssid = "";
        try
        {
            string[] supportedInterfaces;
            StatusCode status;
            if ((status = CaptiveNetwork.TryGetSupportedInterfaces(out supportedInterfaces)) != StatusCode.OK)
            {

            }
            else
            {
                foreach (var item in supportedInterfaces)
                {
                    NSDictionary info;
                    status = CaptiveNetwork.TryCopyCurrentNetworkInfo(item, out info);
                    if (status != StatusCode.OK)
                    {
                        continue;
                    }
                    ssid = info[CaptiveNetwork.NetworkInfoKeySSID].ToString();
                }
            }
        }
        catch
        {

        }
        return ssid;
    }

我尝试为 iOS 12 应用程序添加 "Access WiFi Information" 权利,正如此处提到的那样,但该应用程序仍然得到一个空的 ssid:https://forums.xamarin.com/discussion/139476/adding-access-wifi-information-entitlement-for-ios-12-apps

如果有人能提供帮助,我将不胜感激。

已解决:我为我的 Apple ID 申请了访问 WIFI 信息。然后我再次重新生成我的配置文件并在我的 Xcode 中打开它。不要忘记在 ios Bundle Signing 的 Custom Entertainments 中添加 Entitlements.plist。现在它可以正常工作了。

iOS13更新:Apple宣布iOS13,CNCopyCurrentNetworkInfoAPI将不再return有效Wi-Fi SSID 和 BSSID 信息。

如果您的应用需要有效的 Wi-Fi SSID 和 BSSID 信息才能运行,您可以执行以下操作: · 对于附件设置应用程序,使用 NEHotSpotConfiguration API,它现在可以选择传递您的应用程序希望连接到的 SSID 热点的前缀。 · 对于其他类型的应用程序,使用 CoreLocation API 请求用户同意访问位置信息。

所以,我通过以下方式更新了上面的解决方案:

要在 iOS 12 及更高版本中使用此功能,请为您的应用启用访问 WiFi 信息功能。

所以你必须检查appid中的Access WiFi Infomation。