Xamarin iOS 获取 phone 调用的状态
Xamarin iOS get status back of a phone call
有没有办法在从应用程序拨打电话后恢复通话状态。我正在使用以下方式拨打电话
NSUrl url = new NSUrl("tel://" + phoneStr);
UIApplication.SharedApplication.OpenUrl(url);
显示带有 "Cancel" 和 "Call" 按钮的弹出窗口。如果用户取消它会留在应用程序中,如果用户单击呼叫它会发起呼叫。如果用户拨打电话或取消电话,我想获得点击操作。
有没有办法获得那个状态
On iOS 10+ 当用户进行 phone 调用时,我们可以使用 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();
.
中的字段了
有没有办法在从应用程序拨打电话后恢复通话状态。我正在使用以下方式拨打电话
NSUrl url = new NSUrl("tel://" + phoneStr);
UIApplication.SharedApplication.OpenUrl(url);
显示带有 "Cancel" 和 "Call" 按钮的弹出窗口。如果用户取消它会留在应用程序中,如果用户单击呼叫它会发起呼叫。如果用户拨打电话或取消电话,我想获得点击操作。 有没有办法获得那个状态
On iOS 10+ 当用户进行 phone 调用时,我们可以使用 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();
.