iOS 10:如何使用 CallKit/CXCallObserver 获取呼叫事件?

iOS 10 : How can I get a call event using CallKit/CXCallObserver?

我在 iOS 10.

中用 CXCallObserver 更改了 CTCallCenter

这是我的代码:

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

-(void)viewDidLoad {

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

    ... ...
}

- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
    if (call.hasConnected) {
        NSLog(@"********** voice call connected **********/n");        
    } else if(call.hasEnded) {
        NSLog(@"********** voice call disconnected **********/n");        
    }
}

但是我无法收到语音通话事件,我收到了这样的警告:

Sending 'HomeViewController *const __strong' to parameter of incompatible type 'id<CXCallObserverDelegate> _Nullable

请帮帮我。

您错过了 CXCallObserverDelegate。

@interface HomeViewController : UIViewController <CXCallObserverDelegate>

@end

然后警告将消失,您将收到语音呼叫事件。 希望对你有帮助。

不要忘记存储对callObserver的强引用,以免过早释放:

@interface YourClass ()<CXCallObserverDelegate>
@property (nonatomic, strong) CXCallObserver *callObserver;
@end

- (void)viewDidLoad {
    [super viewDidLoad];

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

有关详细信息,请查看 答案。