即使從後臺攔截來自你應用的呼叫也是如此

來自 Apple 文件:

使用 CTCallCenter 類獲取當前蜂窩呼叫的列表,並響應呼叫的狀態更改,例如從撥號狀態到連線狀態。這種狀態變化稱為蜂窩呼叫事件。

CTCallCenter 的目的是讓開發人員有機會在通話期間暫停其應用狀態,以便為使用者提供最佳體驗。

Objective-C 的:

首先,我們將在要處理攔截的類中定義一個新的類成員:

@property (atomic, strong) CTCallCenter *callCenter;

在我們的類 init(建構函式)中,我們將為類成員分配新記憶體:

[self setCallCenter:[CTCallCenter new]];

之後,我們將呼叫實際處理攔截的新方法:

- (void)registerPhoneCallListener
{
[[self callCenter] setCallEventHandler:^(CTCall * _Nonnull call) {
    NSLog(@"CallEventHandler called - interception in progress");

     if ([call.callState isEqualToString: CTCallStateConnected])
     {
         NSLog(@"Connected");
     }
     else if ([call.callState isEqualToString: CTCallStateDialing])
     {
         NSLog(@"Dialing");
     }
     else if ([call.callState isEqualToString: CTCallStateDisconnected])
     {
         NSLog(@"Disconnected");

     } else if ([call.callState isEqualToString: CTCallStateIncoming])
     {
         NSLog(@"Incomming");
     }
 }];
}

就是這樣,如果使用者將使用你的應用程式並接到電話,你可以攔截此呼叫並處理你的應用程式以進行儲存狀態。

值得一提的是,你可以攔截 4 種呼叫狀態:

CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected

迅速:

在相關類中定義你的類成員並定義它:

    self.callCenter = CTCallCenter()
    self.callCenter.callEventHandler = { call in
        //  Handle your interception
        if call.callState == CTCallStateConnected
        {
        }
    }

如果你的應用程式在後臺並且你需要在應用程式處於後臺時攔截呼叫,會發生什麼?

例如,如果你開發企業應用程式,你基本上只需在功能選項卡中新增 2 個功能(VOIP 和後臺獲取):

你的專案目標 - >功能 - >背景模式 - >標記 IP 語音和後臺提取