[英]iOS How to check if currently on phone call
我環顧四周,我能找到的只是檢查 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
}
}
}
}
我遇到了同樣的問題,但我認為從iOS 10執行此操作的正確方法是:
func checkForActiveCall() -> Bool {
for call in CXCallObserver().calls {
if call.hasEnded == false {
return true
}
}
return false
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.