我有一个可以正常通话的 VoIP 应用程序。
但是,当我们有一个活动的 VoIP 通话并且用户收到一个正常的 PSTN 通话时,活动的 VoIP 通话变为空白 - 任何一方都听不到音频。
为了解决这个问题,我们决定以编程方式结束新的来电,我成功地检测到了 PSTN 来电。但是当我尝试结束通话时,我收到错误提示:
EndCallAction transaction request failed: The operation couldn’t be completed. (com.apple.CallKit.error.requesttransaction error 4.)
错误代码4是指
CXErrorCodeRequestTransactionErrorUnknownCallUUID
.
下面是我的代码:
// called during initialization
self.callObserver = [[CXCallObserver alloc] init];
[self.callObserver setDelegate:self queue:dispatch_get_main_queue()];
- (void)callObserver:(nonnull CXCallObserver *)callObserver callChanged:(nonnull CXCall *)call {
// isCallInProgress static variable tracks if a VoIP call is active and I verified its value - works as expected
if(isCallInProgress) {
if(!call.isOutgoing && !call.hasConnected && !call.hasEnded) {
NSLog(@"*** New incoming call detected while a call is in progress - so reject it");
dispatch_async(dispatch_get_main_queue(), ^{
CXEndCallAction *endCallAction = [[CXEndCallAction alloc] initWithCallUUID:call.UUID];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:endCallAction];
CXCallController *controller = [[CXCallController alloc] init];
[controller requestTransaction:transaction completion:^(NSError *error) {
if (error) {
NSLog(@"*** EndCallAction transaction request failed: %@", [error localizedDescription]);
}
else {
NSLog(@"*** EndCallAction transaction request successful");
}
}];
});
}
}
}
接下来我可以尝试什么?