【问题标题】:CallState is never CTCallStateDisconnected?CallState 永远不会 CTCallStateDisconnected?
【发布时间】:2015-05-12 01:37:41
【问题描述】:

我正在使用CoreLocation 框架,我正在尝试查看用户是否正在通话。我将我的代码放在CoreLocation 中的一个函数中,该函数大约每秒调用一次,并查找用户是否更改了位置。当我运行我的应用程序时,我能够检测到是否有来电以及何时接通了电话,但是当电话挂断时,什么都不会打印。以下是我的代码:

func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) {        
    if let calls = currCall.currentCalls as? Set<CTCall> {
        for call in calls {
            if call.callState == CTCallStateDisconnected{
                println("Disconnected")
            }
            else if call.callState == CTCallStateConnected{
                println("Connected")
            }
            else if call.callState == CTCallStateIncoming{
                println("Incoming")
            }
        }
    }

}

当呼叫传入和连接时,打印语句“Connected”和“Incoming”打印到控制台,但当呼叫断开时,“Disconnected”从不打印。任何帮助将不胜感激。

【问题讨论】:

    标签: ios swift core-location phone-call


    【解决方案1】:

    我不能 100% 确定,但如果您坚持对 CTCall 的引用,您可能只会看到断开的呼叫。 currCallCTCallCenter,对吧?然后调用集只有inprogress call set,断开的调用立即从列表中删除。

    【讨论】:

    • 你有什么建议我会去持有CTCall的引用吗?我明白你的意思,这是有道理的
    • @user1871869 好吧,你可以在你的类中添加一个callInProgress 属性。然后在那里分配连接的呼叫。调用完成后,调用状态的属性应更改为CTCallStateDisconnected。一旦你的逻辑完成了,你可能应该nil那个引用。
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2015-02-06
    • 2021-04-15
    • 2019-11-15
    • 2014-11-01
    相关资源
    最近更新 更多