【问题标题】:Can Callkit be used with non-voip call to get the call states in ios?Callkit 可以与非 voip 通话一起使用以获取 ios 中的通话状态吗?
【发布时间】:2017-07-22 07:31:23
【问题描述】:

我已阅读有关进行非 voip-call 的问题,并且似乎打开 url 是唯一的方法。由于 CoreTelephony 已被弃用,是否可以在使用开放 url 拨打电话时使用 Callkit 获取通话状态?如果没有,有没有办法以编程方式获取呼叫状态?我正在开发一个内部应用程序。

How can CallKit be used to make a non-voip call?

提前致谢!!

【问题讨论】:

  • 您找到解决方案了吗?我还想知道当“正常”呼叫开始或结束时是否可以得到回调。

标签: ios swift core-telephony callkit


【解决方案1】:

要在 CallKit 中获取通话状态,您可以在您的应用中使用 CXCallObserver。

import CallKit

final class ProviderDelegate: NSObject, CXCallObserverDelegate { 
var callObserver: CXCallObserver!

func setupCallObserver(){
callObserver = CXCallObserver()
callObserver.setDelegate(self, queue: nil)
}

func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        if call.hasEnded == true {
            print("CXCallState :Disconnected")
        }
        if call.isOutgoing == true && call.hasConnected == false {
            print("CXCallState :Dialing")
        }
        if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false {
            print("CXCallState :Incoming")
        }

        if call.hasConnected == true && call.hasEnded == false {
            print("CXCallState : Connected")
        }
    }
}

【讨论】:

  • @Krishna 它正在观察每个呼叫,无论是本机呼叫还是应用程序呼叫。是否可以只跟踪本机呼叫? stackoverflow.com/questions/49257417/…
  • @Hiren 您可以使用 uuid 来确定您的应用程序调用类似这样的东西希望它适合您。如果 call.uuid == "你的 uuid"
  • 不可能。我们正在使用 var callUUID 生成呼叫会话:UUID = UUID() 所以无法预测本地呼叫和应用程序呼叫。
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多