gpt4 book ai didi

ios - CallKit CXCallController.request error com.apple.CallKit.error.requesttransaction Code=6 while app is in the background

转载 作者:行者123 更新时间:2023-12-01 16:12:52 35 4
gpt4 key购买 nike

此错误仅出现在 iOS 13.3.1 中。它不会出现在 iOS 13.3.0 或更早版本上。

如果应用程序在前台并调用 CXCallController.request,则它工作正常。但是一旦我将应用程序置于后台并执行“CXCallController.request”(由耳机播放按钮触发),我就会收到以下错误:

Error requesting transaction: Error Domain=com.apple.CallKit.error.requesttransaction Code=6 "(null)"

代码 6 是 CXErrorCodeRequestTransactionError.Code.invalidAction

这是示例代码的片段

let uuid = UUID()
let handle = CXHandle(type: .emailAddress, value: "jappleseed@apple.com")

let startCallAction = CXStartCallAction(call: uuid, handle: handle)

let transaction = CXTransaction(action: startCallAction)
callController.request(transaction) { error in
if let error = error {
print("Error requesting transaction: \(error)")
} else {
print("Requested transaction successfully")
}
}

相同的代码在 iOS 13.3.0 及更早版本中运行良好,无论应用程序是前台还是后台。也许这是 13.3.1 的错误,或者 Apple 在应用程序处于后台时实现了一些安全措施?但是我在 iOS 13.3.1 发行说明中没有看到它。

最佳答案

我找到了解决我自己问题的方法。它可能只适用于我的特定条件。它可能无法解决所有错误代码=6 的问题。只是想让你知道。

解决此问题的方法是,当您的应用程序处于后台时,您必须在调用 CXCallController.request(:) 之前播放音频。如果需要,您甚至可以播放一秒钟的静音。它不一定是可听见的声音。

如果它不起作用,您可以尝试使用 dispatch async 延迟 0.1 秒来调用 CXCallController.request(:)。这个想法是,当您调用 CXCallController.request(:) 时,您需要确保音频引擎处于事件状态。

关于ios - CallKit CXCallController.request error com.apple.CallKit.error.requesttransaction Code=6 while app is in the background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60346953/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com