Xamarin iOS получает статус обратно телефонного звонка

Есть ли способ вернуть статус вызова после вызова из приложения. Я использую следующие, чтобы позвонить

  NSUrl url = new NSUrl("tel://" + phoneStr);
  UIApplication.SharedApplication.OpenUrl(url);

Он показывает всплывающее окно с кнопками "Отмена" и "Позвонить". Если пользователь отменяет его, он остается в приложении, если пользователь нажимает кнопку вызова, он инициирует вызов. Я хотел бы получить действие щелчка, если пользователь совершил звонок или отменил его. Есть ли способ получить этот статус

1 ответ

Решение

На iOS 10+ мы можем использовать CXCallObserver захватить событие, когда пользователь делает телефонный звонок, например:

//Make sure both CXCallObserver and ObserverDelegate a strong reference
private CXCallObserver callObserver;
private MyCallObserverDelegate myCallDelegate;

callObserver = new CXCallObserver();
myCallDelegate = new MyCallObserverDelegate();
callObserver.SetDelegate(myCallDelegate, null);

Реализовать делегата для CXCallObserver:

public class MyCallObserverDelegate : CXCallObserverDelegate
{
    public override void CallChanged(CXCallObserver callObserver, CXCall call)
    {
        Console.WriteLine(call.Outgoing);
        Console.WriteLine(call.HasConnected);
        Console.WriteLine(call.OnHold);
        Console.WriteLine(call.HasEnded);
    }
}

Но, к сожалению, он не сработает, когда пользователь нажмет "Отмена".

После того, как пользователь нажмет кнопку (отменить или позвонить), приложение запустится DidBecomeActiveNotification, поэтому я рекомендую вам создать метод задержки, когда DidBecomeActiveNotification пожары. Затем мы можем определить, какую кнопку нажимает пользователь:

NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidBecomeActiveNotification, async (notification) =>
{
    await Task.Delay(500);
    detectCalling();
});

В раннее время мы можем определить поле bool isDialing = false, если CallChanged() огни установили это правда. Наконец мы можем обнаружить поле в detectCalling();,

Другие вопросы по тегам