我正在尝试将 CallKit 集成到我的 Voip 应用程序中。我引用了 Apple WWDC 中的 SpeakerBox 示例代码。我创建了一个 ProviderDelegate 类,在调用 reportNewIncomingCall
方法后我可以看到来电 UI。
但是当我点击“回答”/“结束”按钮时,相应的提供者代表不会被解雇。这里有什么问题?
请注意,当我实例化 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)providerDidBeginCXProvider *)provider {
// this is getting called
}
- (void)providerCXProvider *)provider performAnswerCallActionCXAnswerCallAction *)action {
// this is not getting called when the Answer button is pressed
}
- (void)reportNewIncomingCallWithUUIDnonnull NSUUID *)UUID handlenonnull NSString *)handle
completionnullable 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);
}];
}
在调用者类中:
CallProviderDelegate *providerDelegate = [[CallProviderDelegate alloc] init];
[providerDelegate reportNewIncomingCallWithUUID:[NSUUID UUID] handle"Raj" completion:^(NSError * _Nullable error) {
//
}];
在您的“调用者”类中,即您在其中实例化 CallProviderDelegate
类并将其分配给 providerDelegate
变量的代码中,您是否存储了 providerDelegate
实例变量或属性中的对象引用?如果只是分配给一个临时的局部变量,那么CallProviderDelegate
对象将在调用方法执行完毕后被释放,如果CallProviderDelegate
对象被释放则不再CXProvider 委托(delegate)消息将被传递。
我会先检查您的 CallProviderDelegate
对象是否被意外释放。
关于ios - CXProviderDelegate 方法没有被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845522/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |