【问题标题】:iOS 10 : How can I get a call event using CallKit/CXCallObserver?iOS 10:如何使用 CallKit/CXCallObserver 获取通话事件?
【发布时间】:2017-02-18 09:52:25
【问题描述】:

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

请帮帮我。

【问题讨论】:

    标签: objective-c ios10 callkit


    【解决方案1】:

    您错过了 CXCallObserverDelegate。

    @interface HomeViewController : UIViewController <CXCallObserverDelegate>
    
    @end
    

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

    【讨论】:

      【解决方案2】:

      不要忘记存储对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答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 2017-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多