iOS如何检查当前是否打电话

我看了看,所有我能find的是检查CTCallCenter的callState。 然而,这是通过监听一个事件来工作的 – 根据应用程序是否被激活/暂停/恢复,事件可以在不同的时间被提出。

我需要的不是听事件,而是在通话连接时被告知,我想决定什么时候询问通话是否连通。

使用案例:连接电话时 – 用户知道并始终点击应用程序图标,这将打开应用程序。 这时候我只想运行一个快速的函数来检查当前是否打电话。

这甚至有可能吗?

CTCallCenter对象有一个currentCalls属性,它是当前调用的NSSet 。 如果有一个调用,则currentCalls属性应该是!= nil。

如果您想知道是否有任何呼叫实际连接,则必须遍历当前呼叫并检查callState以确定它是否为CTCallStateConnected

 #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> -(bool)isOnPhoneCall { /* Returns TRUE/YES if the user is currently on a phone call */ CTCallCenter *callCenter = [[[CTCallCenter alloc] init] autorelease]; for (CTCall *call in callCenter.currentCalls) { if (call.callState == CTCallStateConnected) { return YES; } } return NO; } 

感谢ThomasW的回答。 我以为我也会发布代码。

 - (void)applicationWillEnterForeground:(UIApplication *)application { CTCallCenter *ctCallCenter = [[CTCallCenter alloc] init]; if (ctCallCenter.currentCalls != nil) { NSArray* currentCalls = [ctCallCenter.currentCalls allObjects]; for (CTCall *call in currentCalls) { if(call.callState == CTCallStateConnected) { // connected } } } }