在Xamarin插件Connectivity (Xam.Plugin.Connectivity)中,有一种从PCL轻松检测网络连接变化的方法,例如:
CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
{
page.DisplayAlert("Connectivity Changed", "IsConnected: " + args.IsConnected.ToString(), "OK");
};
属性IsConnected
是只读的,所以我的问题是:
有没有办法手动/编程将IsConnected
设置为false或以其他方式模拟丢失的网络连接?
答案 0 :(得分:0)
我不相信有一种方法可以以编程方式模拟丢失的网络连接。显然,你可以在模拟器和真实设备上做其他事情来实现你想要的东西。我不确定这里的用例是什么,但你可以尝试使用像
这样的东西 CrossConnectivity.Current.IsRemoteReachable("TestHostname", 80, 1000)
而不是依赖于IsConnected属性,正如您所说的那样,它是只读的。 如果您希望用户“断开连接”,请将方法设为无效的主机名,如果您希望将它们“连接”,请将其设置为有效的。
答案 1 :(得分:0)
实施MockConnectivity:
using Plugin.Connectivity.Abstractions;
namespace MyMockConnectivity
{
public class MockConnectivity : BaseConnectivity
{
public void SetIsConnected(bool value)
{
OnConnectivityChanged(new ConnectivityChangedEventArgs { IsConnected = value });
}
public override bool IsConnected { get; }
...
使用:
using MyMockConnectivity;
using Plugin.Connectivity.Abstractions;
...
MockConnectivity MockConnectivity = new MockConnectivity();
IConnectivity Current = MockConnectivity;
Current.ConnectivityChanged += (sender, args) =>
{
Debug.WriteLine("IsConnected: " + args.IsConnected);
};
模拟连接更改:
// Simulate network connection
MockConnectivity.SetIsConnected(true);
// Simulate lost network connection
MockConnectivity.SetIsConnected(false);