第一次调用CallKit报错7

CallKit error 7 when I perform a call for the first time

我已经完成了一个呼叫套件 + twilio IOS 应用程序。问题是(据我所知)ios 12.

当我 运行 设备上的应用 IOS 11 时,通话正常开始。当我 运行 设备上的应用程序 IOS 12 时,当我尝试进行第一个调用时,出现此错误:

  StartCallAction transaction request failed: The operation couldn’t be 
  completed. (com.apple.CallKit.error.requesttransaction error 7.)

此错误表示:请求的事务包含的操作如果执行,将超过提供程序的最大调用组数。但我将 callGroupMax 号码设置为 1(我尝试将其设置为 2,3 但仍然相同)

我在 google 上只发现一个线程有这个错误,但没有提供解决方案。请给我提示导致此错误的原因,因为我一直坚持这一点。

只有在全新安装后进行第一次调用时才会出现此错误。然后我就可以按预期拨打电话了。

这是 callkitManager class:

class CallKitManager: NSObject {
    class var shared: CallKitManager {
        struct Static {
            static let instance: CallKitManager = CallKitManager()
        }
        return Static.instance
    }

    fileprivate let callKitProvider: CXProvider

    override init() {
        callKitProvider = CXProvider(configuration: type(of: self).providerConfiguration)
        super.init()
        callKitProvider.setDelegate(self, queue: nil)
    }

    static var providerConfiguration: CXProviderConfiguration {
        let localizedName                      = NSLocalizedString("NAME", comment: "Name of application")
        let configuration                      = CXProviderConfiguration(localizedName: localizedName)
        configuration.supportsVideo            = false
        configuration.maximumCallsPerCallGroup = 1
        configuration.ringtoneSound            = "myringtone"
        configuration.supportedHandleTypes     = [.generic]

        if let callKitIcon = UIImage(named: "callKitIcon") {
            configuration.iconTemplateImageData = callKitIcon.pngData()
        }

        return configuration
    }

我希望调用从第一次开始连接,但结果是在 performStartCallAction() 方法中我从上面得到错误。

所以 2 天后我弄明白了。问题是我将 callKit 用作单例,这是错误的。您需要 "to mimic" 一个使用 AppDelegate 的单例。请参阅本教程 https://www.raywenderlich.com/701-callkit-tutorial-for-ios 并查看 AppDelegate 并了解其实现方式。