分离连接更改 Xamarin Forms

Detaching Connectivity Changes Xamarin Forms

我正在使用 Xamarin.Essentials 来处理连接变化,这一切都适用于 android

但是我注意到在 iOS 它没有工作,我调试并注意到

  1. 在iOS物理设备中向下滑动屏幕

  2. 将 phone 置于飞行模式并移除 wifi

  3. 触发睡眠事件并移除连接

    //App.Xaml
    
    protected override void OnSleep()
    {
        Connectivity.ConnectivityChanged -= OnConnectivityChanged;
    }
    
    protected override void OnStart()
    {
        Connectivity.ConnectivityChanged += OnConnectivityChanged;
    }
    
    
    
    protected override void OnResume()
    {
         Connectivity.ConnectivityChanged += OnConnectivityChanged;
    }
    

如果我注释掉

 Connectivity.ConnectivityChanged -= OnConnectivityChanged; 

一切正常。 我错过了显而易见的事情吗?

我应该在哪里断开连接?

这是因为 Forms 生命周期与原生平台的声明式生命周期方式有些不同,您可以直接在原生 ios 生命周期中进行。

在您的 ios 项目中 AppDelegate.cs :

public override void OnActivated(UIApplication application)
    {
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
    }

 public override void DidEnterBackground(UIApplication uiApplication)
    {
        Connectivity.ConnectivityChanged -= Connectivity_ConnectivityChanged;
    }

 private void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        //do some thing
    }

你可以参考lefecycle.

注意: 在 iOS 13(及以后),您还需要将它们写入 SceneDelegate