![](/img/trans.png)
[英]CallKit error com.apple.CallKit.error.requesttransaction error 7
[英]CallKit reinitializing causes com.apple.CallKit.error.requesttransaction Code=4 (UnknownCallUUID)
我的 iOS VoIP 应用程序使用 CallKit 来支持本地呼叫集成功能。 首次启动时一切正常,但如果我重新初始化 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 class 设置为 singleton,它似乎正在工作,这是唯一可能的解决方案吗? 您是否应该避免在应用程序运行时重新初始化 CallKit?
文档说:
VoIP 应用程序应该只创建一个
CXProvider
实例并将其存储以供全球使用。
所以,是的:您应该避免在每次要重新配置CXProvider
时实例化它。 只需保留一个全局参考并在需要时重新配置它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.