【发布时间】:2018-08-15 16:12:55
【问题描述】:
我读过其他几篇文章,例如这篇文章: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];
【问题讨论】:
-
尝试将 AppDelegate 设为
CXCallObserver。 AppDelegate 正确处理所有调用事件。
标签: ios objective-c callkit