首页 > 解决方案 > Unhold GSM 通话后,Callkit 变成静音,我听不到任何声音

问题描述

我检查了许多类似的问题,但没有任何答案...

我正在使用 Callkit,它工作正常。但问题是当 GSM 呼叫到达并且我的 VOIP 呼叫保持通话,然后当我单击 Callkit 的交换按钮以取消保持我的呼叫时,取消保持请求正确发送但问题是声音在 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?

谢谢

标签: objective-ccallkit

解决方案


实际上,您正在生成一个无限循环:在- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action函数中,在 unhold 的情况下,您调用- (void)holdCall:(BOOL)hold它又会生成对 的另一个调用- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action,依此类推。

所以,你只需要删除[self holdCall:NO];里面- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action


推荐阅读