xamarin - 如何在Xamarin中使用CXCallObserver?

标签 xamarin xamarin.ios xamarin.forms

我需要订阅一个事件来处理来电。由于 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的委托(delegate):

public class MyCXCallObserverDelegate : CXCallObserverDelegate
{
    public override void CallChanged(CXCallObserver callObserver, CXCall call)
    {
        Console.WriteLine(call);
    }
}

然后在您的代码中,创建一个 CXCallObserver 实例(保持对此的强引用),然后分配委托(delegate):

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

关于xamarin - 如何在Xamarin中使用CXCallObserver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540684/

相关文章:

ios - 在 Windows 上启动项目,现在在 Mac 上克隆使 iOS Bundle Options 选项卡消失

c# - 检测 Wifi 的变化

xamarin.forms - Xamarin.iOS 项目 : CS1703: Multiple assemblies with equivalent identity have been imported

ios - 处理 CAKeyFrameAnimation 的正确方法

c# - 如何为 Xamarin.Android 实现证书透明度

c# - 主页面的SetContentView

Xamarin thrift pcl 实现

c# - Xamarin.Forms 安卓

c# - CrossMediaManager.Current.Play 不在 iOS xamarin.forms 上播放本地音频文件

c# - 如何在 Xamarin.Forms 中获取客户端设备的 MAC 地址?