7

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

请帮我。

4

2 回答 2

4

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

有关更多信息,请查看答案。

于 2016-10-14T19:19:43.177 回答
3

你错过了 CXCallObserverDelegate。

@interface HomeViewController : UIViewController <CXCallObserverDelegate>

@end

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

于 2016-10-10T02:19:01.767 回答