未触发 CXProviderDelegate 方法

CXProviderDelegate methods are not triggered

我正在尝试将 CallKit 集成到我的 Voip 应用程序中。我参考了 Apple WWDC 的 SpeakerBox 示例代码。我创建了一个 ProviderDelegate class 并且在调用 reportNewIncomingCall 方法后我能够看到传入呼叫 UI。

但是当我点击 "Answer"/"End" 按钮时,不会触发相应的提供者代表。这里可能有什么问题?

请注意,当我实例化 CallProviderDelegate 时会调用“providerDidBegin”。

@implementation CallProviderDelegate

- (instancetype)init
{
    self = [super init];
    if (self) {
        _providerConfiguration = [self getProviderConfiguration];
        _provider = [[CXProvider alloc] initWithConfiguration:_providerConfiguration];
        [_provider setDelegate:self queue:nil];
    }
    return self;
}

- (void)providerDidBegin:(CXProvider *)provider {
   // this is getting called
}

- (void)provider:(CXProvider *)provider performAnswerCallAction:(CXAnswerCallAction *)action {
  // this is not getting called when the Answer button is pressed
}

- (void)reportNewIncomingCallWithUUID:(nonnull NSUUID *)UUID handle:(nonnull NSString *)handle
                           completion:(nullable void (^)(NSError *_Nullable error))completion {

    CXCallUpdate *update = [[CXCallUpdate alloc] init];
    update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:handle];
    update.hasVideo = NO;

    [_provider reportNewIncomingCallWithUUID:UUID update:update completion:^(NSError * _Nullable error) {
        completion(error);
    }]; 
}

来电者 Class:

CallProviderDelegate *providerDelegate = [[CallProviderDelegate alloc] init];
[providerDelegate reportNewIncomingCallWithUUID:[NSUUID UUID] handle:@"Raj" completion:^(NSError * _Nullable error) {
            //
 }];

在您的 "caller" class 中,即实例化 CallProviderDelegate class 并将其分配给 providerDelegate 变量的代码,您是将 providerDelegate 对象引用存储在实例变量或 属性 中?如果它只是被分配给一个临时局部变量,那么 CallProviderDelegate 对象将在调用方法完成执行后被释放,如果 CallProviderDelegate 对象被释放,则不会传递进一步的 CXProvider 委托消息.

我会首先检查您的 CallProviderDelegate 对象是否被意外释放。