iOS CallKit CXCallObserver delegate 方法 callChanged 永不触发



我读过其他几篇帖子,比如这篇: iOS:无法在 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];

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

要解决此问题,您需要具有以下功能的导入框架:

#import <CallKit/CallKit.h>

相反

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

我希望这对你有帮助

相关内容

最新更新