如何获取有关电话的信息

时间:2017-07-10 16:32:01

标签: android ios iphone mobile callkit

我必须开发一个移动应用程序来监控有关呼叫的一些信息,以限制公司用户花费太多时间将电话放在耳边。 x 分钟后,建议使用耳机。

第一个问题:是否可以监控这样的数据?电话通话的持续时间,开始和结束,如果它使用的是耳机,内置或外置扬声器......我的意思是,不使用越狱或其他黑客攻击。

第二个问题:是否有可能为IOS和Android做这个?

<3>问题:你知道Ionic是否具备这种能力吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

回答您的问题:

问题1:是的,可以在Android上使用。这在iOS上是不可能的。在Android中,如果用户允许,您可以获取呼叫信息。你不需要做越狱或其他什么。而在iOS中,您无法访问呼叫信息。

问题2:希望我的第一个答案自己回答这个问题。 i。,e-Android-Possible,iOS-不可能

问题3: AFAIK离子框架仅提供电话呼叫持续时间和联系人框架的基本详细信息。您应该在Android上探索更多信息。即使您使用离子框架,您也无法在iPhone上访问此信息,因为本机ios仅提供这些细节,我们不能指望离子框架。

答案 1 :(得分:1)

适用于Android:

  • 您可以轻松获取通话记录或来电和去电时间。 所以它可以在android。

适用于iOS:

根据您的问题,您希望将手机的当前通话时间限制在耳边。

所以你也可以通过一些聪明的方式在iOS中做到这一点。

  • 在iOS 10中,新的框架引入了呼叫,即CallKit。
  • 首先,您必须在申请中获得所有联系。
  • 因此,用户应该从您的应用中致电。
  • 对于拨号,还可以添加自定义电话拨号程序。

通过callKit的一些方法,你可以做到:

  1. 添加呼叫观察员

    @property(非原子)CXCallObserver * callObserver;

  2. 初始化调用观察者:

    • (instancetype)INIT {     self = [super init];     if(self){

          //Initialize the call observer
          _callObserver = [CXCallObserver new];
          [_callObserver setDelegate:self queue:dispatch_get_main_queue()];
      }
      return self;
      

      }

  3. 添加呼叫工具包的代表

    #pragma mark - CXCallObserverDelegate
    - (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call{
        [self callStateValue:call];
    }
    
    #pragma mark - Callkit State
    - (void)callStateValue:(CXCall *)call {
    
        NSLog(@"Call UIID: %@", call.UUID);
        NSLog(@"hasEnded     %@", call.hasEnded? @"YES":@"NO");
        NSLog(@"isOutgoing   %@", call.isOutgoing? @"YES":@"NO");
        NSLog(@"isOnHold     %@", call.isOnHold? @"YES":@"NO");
        NSLog(@"hasConnected %@", call.hasConnected? @"YES":@"NO");
    
        if (call == nil || call.hasEnded == YES) {
            NSLog(@"CXCallState : Disconnected");
            [timer1 invalidate];
            NSLog(@"%ld",(long)self.duration);
            if(self.duration>1)
            self.duration=1;
        }
    
        if (call.isOutgoing == YES && call.hasConnected == NO) {
        }
    
        if (call.isOutgoing == NO  && call.hasConnected == NO && call.hasEnded == NO && call != nil) {
            self.duration = 0;
            NSLog(@"CXCallState : Incoming");
            NSLog(@"Call Details: %@",call);
        }
    
        if (call.hasConnected == YES && call.hasEnded == NO) {
            NSLog(@"CXCallState : Connected");
        timer1 = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
            self.duration++;
            NSLog(@"%ld",(long)self.duration);
        }];
    
        }
    }
    

    你可以获得持续时间并添加条件在x分钟后,它应该建议使用耳机。