【问题标题】:Xamarin.forms ios open dialer without alert boxXamarin.forms ios打开拨号器没有警报框
【发布时间】:2019-10-17 04:59:29
【问题描述】:

我在我的 xamarin 表单应用程序中使用 Xamarin.Essentials 电话拨号器来拨打电话。在android中,当我们点击通话时,它会直接打开拨号器。在 ios 中,当我们点击通话时,它首先会显示一个提示框,询问 Callcancel。是否可以在不显示弹出窗口的情况下在 ios 中打开拨号程序?如果不可能,我们可以得到警报框取消调用点击事件吗?

【问题讨论】:

  • 这是原生 ios 行为,我认为无法更改。但是让我看看我能不能找到什么
  • @FreakyAli 这将是一个很大的帮助兄弟
  • @FreakyAli 我看到了这个问题,所以我要求获取取消或调用按钮点击事件
  • 你也无法理解你到底想要达到什么目的?

标签: xamarin.forms


【解决方案1】:

很遗憾,这在 iOS 中是不可能的。

来自 Apple 的文档:

openURL

当第三方应用程序在 tel:// 上调用 openURL: 时, facetime:// 或 facetime-audio:// URL,iOS 会显示一个提示和 拨号前需要用户确认。

出于安全原因,iOS 要求用户在拨入之前确认他们要执行呼叫。

【讨论】:

  • 好的。是否可以获取取消和调用按钮事件?
  • 不,这是一个系统对话框,没有要订阅的回调或事件。确定用户是否使用拨号器(点击通话)的一种简单方法是在应用程序进入后台时订阅应用程序事件。这只是一个想法。
【解决方案2】:

是否可以在不显示弹窗的情况下在ios中打开拨号器?

不,这是设计使然。

我们可以让警报框取消或调用点击事件

在iOS项目中你必须自己检测电话的状态,你可以在AppDelegate中写如下代码:

    CXCallObserver callObserver = new CXCallObserver();
    callObserver.SetDelegate(new myDelegate(), DispatchQueue.MainQueue);

并且在委托中,你可以检查调用状态:

  public class myDelegate : ICXCallObserverDelegate
    {
        public IntPtr Handle => throw new NotImplementedException();

        public void CallChanged(CXCallObserver callObserver, CXCall call)
        {
            if (call.Outgoing==true && call.HasConnected ==false)
            {
                Console.WriteLine("Dialing");
                //use Messaging Center to send the state to Xamarin.forms Project.
            }

            if (call.Outgoing ==false && call.HasConnected == false)
            {
                Console.WriteLine("disconnect");
                //use Messaging Center to send the state to Xamarin.forms Project.
            }
            //you can use other state to check the state...
            //call.OnHold; call.HasEnded;

        }

        public void Dispose()
        {
        }
    }

【讨论】:

  • 检测状态变化以了解用户是否点击了取消或按钮。
  • 让我检查一下兄弟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2014-09-27
相关资源
最近更新 更多