我检查了许多类似的问题,但没有任何答案...
我正在使用Callkit,它工作正常。但是问题是当GSM呼叫到达并且我的VOIP呼叫保持呼叫,然后当我单击以交换Callkit的按钮以取消保留我的呼叫时,unHold请求正确发送,但是问题是声音在Callkit中变得静音并且没有人什么都听不到。
- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action {
if (action.isOnHold) {
NSLog(@"Call on hold");
} else {
[self holdCall:NO];
}
[action fulfill];
}
- (void)holdCall:(BOOL)hold {
NSLog(@"What is current call uuid %@",self.currentCallUUID);
CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:self.currentCallUUID onHold:hold];
CXTransaction *transaction = [[CXTransaction alloc] init];
[transaction addAction:holdCallAction];
[self requestTransaction:transaction];
}
当我调用unHold方法时,它会进入无限循环的状态……任何人都有相同的问题,或者我怎么能解除对Callkit的持有权?
谢谢
答案 0 :(得分:0)
实际上,您正在生成一个无限循环:在- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action
函数中,在未保持状态下,您正在调用- (void)holdCall:(BOOL)hold
,这反过来又会生成对- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action
的另一个调用,等等。
因此,您只需删除[self holdCall:NO];
内的- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action