gpt4 book ai didi

ios - CallKit 重新初始化导致 com.apple.CallKit.error.requesttransaction Code=4 (UnknownCallUUID)

转载 作者:行者123 更新时间:2023-11-29 05:22:36 25 4
gpt4 key购买 nike

我的 iOS VoIP 应用程序使用 CallKit 来支持 native 调用集成功能。第一次启动时一切正常,但如果我重新初始化 CXProvider 和 CXCallController(为了禁用/启用功能),来电挂断后我会收到错误“com.apple.CallKit.error.requesttransaction Code=4”。

@implementation CallKitHandler
- (void) configureCallKitWith
{
...
self.callKitProvider = [[CXProvider alloc] initWithConfiguration:_cxpConfiguration];
[_callKitProvider setDelegate:self queue:nil];

self.callKitCallController = [CXCallController new];
[_callKitCallController.callObserver setDelegate:self queue:nil];
...
}
- (void) requestEndCallActionWithCall:(Call*) callEnded
{
CXEndCallAction* endCallAction = [[CXEndCallAction alloc] initWithCallUUID:self.callUUId];
CXTransaction* transaction = [[CXTransaction alloc] initWithAction:endCallAction];
OTCLogVerbose (@"requestEndCallActionWithCall '%@' : %@", callEnded.reference, transaction);

[self.callKitCallController requestTransaction:transaction completion:^(NSError* error) {
if (error)
{
OTCLogWarn (@"requestEndCallActionWithCall failed for '%@': %@", _callUUId, [self errorDescriptionOf: error]);

我尝试将我的 CallKitHandler 类设置为单例,它似乎有效,这是唯一可能的解决方案吗?您是否应该避免在应用运行时重新初始化 CallKit?

最佳答案

documentation说:

A VoIP app should create only one instance of CXProvider and store it for use globally.

所以,是的:您应该避免每次想要重新配置它时都实例化CXProvider。只需保留全局引用并在需要时重新配置即可。

关于ios - CallKit 重新初始化导致 com.apple.CallKit.error.requesttransaction Code=4 (UnknownCallUUID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519228/

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