CallKit 错误 com.apple.CallKit.error.requesttransaction 错误 7

CallKit error com.apple.CallKit.error.requesttransaction error 7

我正在使用 Twilio 语音快速入门代码 https://github.com/twilio/voice-quickstart-swift。 当我进行客户端对客户端呼叫时,呼叫无法接通。虽然 CallKit 在后台运行,但在后台发送应用程序时我可以看到绿色通知栏。 以下是错误: StartCallAction 事务请求失败:操作无法完成。 (com.apple.CallKit.error.requesttransaction 错误 7。)

如您所见,谷歌搜索没有帮助,因为似乎没有任何解决方案?

有谁知道如何进一步修复或调试它?

更新: 附加 VoIP 设置,它肯定已启用。

此处为 Twilio 开发人员布道师。

你有enabled capabilities for Voice over IP in the project settings吗?

问题出在您编写的用于处理和初始化变量的代码中。 Twilio sdk 也没有任何问题,所以不要看那里。您在 twilio 示例代码之外所做的任何事情都是寻找问题的地方。

我也在类似问题上浪费了几个月的时间,发现初始化一个变量有问题。

尝试在请求 CXStartCallAction 之前尽快初始化 CXProvider 和 CXCallController

您正在尝试在另一个 CXStartCallAction 被请求后立即请求 CXStartCallAction。您需要正确结束第一个通话。

在任何情况下,您都必须遵循正确的操作顺序。一旦您在序列中执行了错误的操作,CallKit 将 return 一个或另一个错误。

并且不要在处理完另一项操作后立即请求一项操作。两次请求之间应该有一些时间。例如,您发起了 CXStartCallAction,然后您检查到该用户处于离线状态并试图结束通话。如果该检查很快,则“结束操作”可能会导致错误。您需要等待几毫秒才能取消去电。

我遇到了同样的问题,因为 ProviderCallController 被延迟加载了。

看起来 CXProvider initWithConfiguration 运行 是异步的,这意味着您需要尽早调用它,否则您 运行 有在没有调用的情况下进行调用的风险initWithConfiguration函数完成。

感谢@Allen 为我指明了正确的方向。