В моем приложении 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 как синглтон, и, похоже, он работает, это единственно возможное решение? Вам следует избегать повторной инициализации CallKit во время выполнения приложения?