我是Xamarin.Forms的新手,我想检查iOS和Android应用中的互联网连接状态。事实上,使用CrossConnectivity插件我能够成功检查互联网连接,但它不能作为Listener工作。例如,当我打开我的应用程序并且没有互联网连接时,它会显示消息“#34;没有互联网连接"现在,如果我在我的移动数据上,那么它也会向我显示相同的消息。我使用下面的代码:
string isConnected=CrossConnectivity.Current.IsConnected?"Connected":"No Connection";
我的应用无法在中间地区收听互联网连接状态的变化。
答案 0 :(得分:4)
使用插件CrossConnectivity,您需要通过事件ConnectivityChanged监听更改,因此在您的页面或App类中,添加此代码以编写事件处理程序:
- name: vlan config (vrf edition) // with interface[0]
- name: vlan config (vrf edition) // with interface[1]
- name: vrf config // with interface[0]
- name: vrf config // with interface[1]
答案 1 :(得分:2)
我有Android的解决方案,但我还没有开始处理ios部分 (有总比没有好 ;) 首先创建一个broadcastReceiver
public class Localize: BroadcastReceiver
{
public static Context context;
public Localize(Context ctx)
{
context = ctx;
}
public override void OnReceive (Context context, Intent intent)
{
isNetworkAvailable (context);
}
public void isNetworkAvailable(Context context)
{
Boolean state = false;
ConnectivityManager connectivity = (ConnectivityManager)
context.GetSystemService(Context.ConnectivityService);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.GetAllNetworkInfo();
foreach (NetworkInfo nwork in info)
{
if (nwork.GetState () == NetworkInfo.State.Connected) {
ConnectionDetected();//Execute your fonction here
break;
}
}
}
}
然后在您的活动中注册您的广播接收者(例如,在MainActivity中)
IntentFilter filter = new IntentFilter(ConnectivityManager.ConnectivityAction);
receiver = new Localize(this);
RegisterReceiver(receiver, filter);
只要您的应用程序正在运行,这应该有效。如果您想要一个即使您的应用程序被杀死也要运行的服务,您应该创建一个服务,然后在您的服务中注册broadcastReceiver ..
CrossConnectivity.Current.IsReachable("localhost");
如果你下载包也可以。我还没有彻底测试过它