如何在Xamarin中使用CXCallObserver?

如何在Xamarin中使用CXCallObserver?,xamarin,xamarin.ios,xamarin.forms,Xamarin,Xamarin.ios,Xamarin.forms,我需要订阅一个事件来处理传入的电话。由于iOS 11.0版CTCallCenter已被弃用,我们必须使用CXCallObserver。我成功实现了CTCallCenter的解决方案,但无法订阅CXCallObserver的事件。有人有CXCallObserver的工作解决方案吗 这是我为CTCallCenter订阅活动的代码 _callCenter = new CTCallCenter(); _callCenter.CallEventHandler += CallEvent; private

我需要订阅一个事件来处理传入的电话。由于iOS 11.0版CTCallCenter已被弃用,我们必须使用CXCallObserver。我成功实现了CTCallCenter的解决方案,但无法订阅CXCallObserver的事件。有人有CXCallObserver的工作解决方案吗

这是我为CTCallCenter订阅活动的代码

_callCenter = new CTCallCenter();
_callCenter.CallEventHandler += CallEvent;

private void CallEvent(CTCall call)
{
    CoreFoundation.DispatchQueue.MainQueue.DispatchSync(() =>
    {
        if(call.CallState.Equals(call.StateIncoming))
            //Do something
    });
}

CXCallObserver
执行委托:

public class MyCXCallObserverDelegate : CXCallObserverDelegate
{
    public override void CallChanged(CXCallObserver callObserver, CXCall call)
    {
        Console.WriteLine(call);
    }
}
然后在代码中,创建一个
CXCallObserver
的实例(保持对此的强引用),然后分配代理:

cXCallObserver = new CXCallObserver();
cXCallObserver.SetDelegate(new MyCXCallObserverDelegate(), null);

您还知道如何正确释放此委托的资源吗?@JanNepraš对于
CXCallObserverDelegate
,没有弱委托,因此我个人保留了对
CXCallObserverDelegate
CXCallObserverDelegate
实例的引用,并手动处置它们。