在Xamarin iOS

时间:2019-07-11 07:58:39

标签: xamarin.ios

错误域= NEHotspotConfigurationErrorDomain代码= 8“内部错误”。 UserInfo = {NSLocalizedDescription =内部错误。}

这是我的代码:

NEHotspotConfigurationManager wifiManager = new NEHotspotConfigurationManager();             var wifiConfig = new NEHotspotConfiguration(ssid,password,false){JoinOnce = true};

        wifiManager.RemoveConfiguration(ssid);
        wifiManager.ApplyConfigurationAsync(wifiConfig);
        wifiManager.ApplyConfiguration(wifiConfig, (error) =>
        {
            if (error != null)
            {
                Console.WriteLine(error.GetType());
                Console.WriteLine($"Error while connecting to WiFi network {ssid}: {error}");
            }
        });
        return true;

1 个答案:

答案 0 :(得分:0)

这是iOS11 +的新增功能,可让您的应用使用已知的SSID加入网络。您可以找到documentation over at Apple。要使用它,您无需请求访问超级秘密热点API,但仍需要进行一些配置。

第一步是在Entitlements.plist文件中设置“ 启用热点配置”授权:

enter image description here

在为您的应用程序创建应用程序ID时,还必须在开发人员门户中配置此权利:

enter image description here

有了这些设置,您就可以开始连接到网络了。该代码并不复杂,并且需要创建一个NEHotspotConfiguration对象,该对象指定如何使用网络。例如,可配置参数中的一个布尔值告诉iOS,您是要尝试临时访问网络还是访问网络的时间更长。您应该read the documentation找出最适合您的情况的设置。这是一个代码示例:

var config = new NEHotspotConfiguration(ssid, password, isWep: false);
config.JoinOnce = false;
var tcs = new TaskCompletionSource<NSError>();
NEHotspotConfigurationManager.SharedManager.ApplyConfiguration(config, err => tcs.SetResult(err));
var error = await tcs.Task;
if (error != null)
{
    var alert = new UIAlertController
    {
        Title = "Error",
        Message = error.Description
    };
    alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
    PresentViewController(alert, true, null);
    return;
}

注意:如果在IOS 12中,则还需要在“权利”中进行设置:

enter image description here

和AppID:

enter image description here