如何恢复保持呼叫套件呼叫



我正在我的Objective-C应用程序中使用CallKit。

我可以使用 CallKit 拨打电话。如果第二个电话打进来,我成功地将其设置为保持。当我结束第二个呼叫时,

- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action

- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call

方法确实会被调用。

但是

 - (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action

方法不会自动调用。

我是否必须手动触发它,例如从以下方法触发

- (void)performHoldCallActionWithUUID:(NSUUID *)uuid onHold:(BOOL)onHold {
    //...
    CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:uuid onHold:onHold];
    CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdCallAction];
    [self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
        //...
    }];
}

或者有没有办法让提供者在用户结束第二次调用时"自动"调用它?

谢谢。

系统仅通知您呼叫已结束(使用 UUID(并且呼叫状态已更改,但它不会更改您的呼叫状态,您需要手动执行此操作。

当系统通过以下方式通知您时,选项将从保留状态退出

- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call

为此,您会收到已更改的呼叫,并且可以访问呼叫的UUID。您可以知道呼叫已结束,并比较 UUID 以了解此呼叫是否是应用程序的呼叫。如果:

  • 应用程序具有活动呼叫,
  • 它被搁置了,
  • 并且作为方法中的参数收到的调用不是您的调用(UUID 不等于(
  • 并且作为参数接收的调用结束,

然后,您可以使用以下方法退出保持通话:

CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:appCallUUID onHold:NO];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdCallAction];
[self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
    //...
}];

我想帮助您编写更多代码,但我正在用手机编写,我不记得如何访问通话信息。

希望对您有所帮助

相关内容

  • 没有找到相关文章

最新更新