iOS Callkit : CXProvider resets immediately after starting

标签 ios objective-c callkit

我正在将现有的 VoIP 应用程序转换为 Callkit。我有很多代码,但不知何故,当我初始化 CXProvider 时,它将调用 providerDidBegin,然后立即调用 providerDidReset。它没有给出原因。之后我无法注册我的拨出电话之一,因为我的提供商未激活。

我已经尝试查看证书、设置等,但基本上我不需要比我的 VoIP 应用程序看起来更多的东西。

CallKit调用重置方法的调用如下:

CallKit`__42-[CXProvider handleConnectionInterruption]_block_invoke:

当我深入挖掘它的来源时,它与 NSXPCConnection 相关。这个连接是什么?我需要如何设置它?

当然没有连接中断。

这是我初始化代理的方式:

- (id)init {
    self = [super init];

    self.configuration = [[ProviderConfiguration alloc] init];
    self.provider = [[CXProvider alloc] initWithConfiguration:self.configuration];

    [self.provider setDelegate:self queue:dispatch_get_main_queue()];

    return self;
}

这是配置的样子:

- (instancetype)init {
    self = [super initWithLocalizedName:@"MyCompany"];

    self.supportsVideo = NO;
    self.maximumCallsPerCallGroup = 1;
    self.supportedHandleTypes = [[NSSet alloc] initWithObjects:[NSNumber numberWithInt:(int)CXHandleTypePhoneNumber], nil];
    self.maximumCallGroups = 1;
    self.maximumCallsPerCallGroup = 5;


    return self;
}

两个回调都实现了:

- (void)providerDidBegin:(CXProvider *)provider {
    NSLog(@"Begun");
}

- (void)providerDidReset:(CXProvider *)provider {
    NSLog(@"Reset");
}

最佳答案

在我的例子中,同样的问题是由于 Info.plist 文件中缺少 VOIP 后台模式造成的

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
    <string>voip</string>
</array>

出于某些未知原因,XCode 9 不允许使用“功能”选项卡设置此后台模式。

关于iOS Callkit : CXProvider resets immediately after starting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43503816/

相关文章:

objective-c - 核心数据一对多关系 : fetching specific related entities

ios - 从应用程序委托(delegate)调用时未加载调用工具包 ui

ios - 什么是更新CXCallDirectoryExtensionContext标签的正确方法?

ios - Xcode 8 没有添加 CallKit 隐私权限的选项

objective-c - 在 Mac OS X 上的 GDB 中使用 strcmp() 的条件断点与 Objective-C 运行时冲突

iphone - ios sdk 中的付款选项,无需应用内购买和 PayPal

ios - swift 3 : What's the safest way to unwrap optional values coming from an array?

iphone - 选择 TableRow 和 SelectionColor 应该是可见的,然后自动消失

ios - 如何在iOS项目中使用dylib库和hpp头文件?

ios - UISearchDisplayController 删除行未删除