iOS CallKit CXCallObserver委托方法callChanged不会触发

时间:2018-08-15 16:12:56

标签: ios objective-c callkit

我还阅读了其他几篇文章,例如:iOS: Could not get outgoing call events in CallKit。解决方案始终是确保对CXCallObserver对象的引用是牢固的,以使其在需要之前不会消失。我相信我已经做到了,但是仍然有问题。我使用的是Objective-C SDK 11.3;代码构建良好,没有错误或崩溃。 callChanged方法永远不会触发。有什么想法吗?

这是我的代码:

CXCallObserverDelegate.h :(不知道为什么我需要自己创建它,但是没有它我的代码将无法构建。但是,当我这样做时,我会收到警告,“重复定义将被忽略。”看来这应该是个问题,但是可以吗?)。

#import <CallKit/CXCallObserver.h>
#import <CallKit/CXCall.h>

@protocol CXCallObserverDelegate

    - (void)callObserver:(CXCallObserver *)callObserver
        callChanged:(CXCall *)call;

@end

MyViewController.h:

#import "CXCallObserverDelegate.h"

@interface MyViewController: MixpanelTrack <OtherDelegate,AnotherDelegate,CXCallObserverDelegate>

{…}

MyViewController.m:

#import <CallKit/CXCallObserver.h>
#import <CallKit/CXCall.h>

@property (atomic, strong) CXCallObserver *callObserver;

-(void)viewDidLoad {
    [super viewDidLoad];
    [self launchCallObserver];

}


-(void) launchCallObserver {

    CXCallObserver *callObserver = [[CXCallObserver alloc] init];
    [callObserver setDelegate:self queue:nil];
    self.callObserver = callObserver;    

}


-(void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
    if (call.hasConnected) {
        [TSMessage showNotificationWithTitle:@“I never see this“ type:TSMessageNotificationTypeSuccess];

    } else if (call.hasEnded) {
        [TSMessage showNotificationWithTitle:@“I never see this either“ type:TSMessageNotificationTypeSuccess];        
    }
}

我正在通过我的应用以编程方式拨打电话:

[[UIApplication sharedApplication] openURL:phoneUrl];

1 个答案:

答案 0 :(得分:0)

我检查了我们的项目,发现了您的问题:您使用的是导入类而不是Callkit框架,因此当您从未导入此协议时,您将覆盖CXCallObserverDelegate

要解决此问题,您需要使用以下导入框架:

#import <CallKit/CallKit.h>

代替

#import <CallKit/CXCallObserver.h>
#import <CallKit/CXCall.h>

希望对您有帮助