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

时间:2016-10-10 02:07:23

标签: objective-c ios10 callkit

我在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

请帮帮我。

2 个答案:

答案 0 :(得分:3)

不要忘记存储对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;
}

有关详细信息,请查看this answer。

答案 1 :(得分:1)

你错过了CXCallObserverDelegate。

@interface HomeViewController : UIViewController <CXCallObserverDelegate>

@end

然后警告将消失,您将收到语音通话事件。 我希望这能帮到你。