2016-10-10 147 views
2

我改变了CTCallCenter与CXCallObserver在iOS的10iOS 10:如何使用CallKit/CXCallObserver获取呼叫事件?

这里是我的代码:

#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 

请帮帮我。

回答

1

您错过了CXCallObserverDelegate。

@interface HomeViewController : UIViewController <CXCallObserverDelegate> 

@end 

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

1

不要忘了有力的参考存储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答案。