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;
}
有关详细信息,请查看 答案。
我在 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;
}
有关详细信息,请查看