如何获取有关 phone 个电话的信息

How to Get info about phone calls

我必须开发一个移动应用程序来监控有关通话的一些信息,以限制公司的用户花太多时间在他们耳朵附近的 phone 上。 x 分钟后,应该建议使用 earphones。

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

第二个问题:是否可以对 IOS 和 Android 执行此操作?

第 3 个问题:您知道 Ionic 是否有能力做到这一点?

谢谢。

回答您的问题:

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

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

问题 3: AFAIK ionic 框架仅提供 Phone 通话时长和联系人框架的基本细节。您应该在 Android 上探索更多以找出答案。即使您使用 ionic 框架,您也根本无法在 iPhone 上访问此信息,因为本机 ios 只是不提供这些详细信息,我们不能期望从 ionic 框架中获得此信息。

对于Android:

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

对于iOS:

根据你的问题,你想把phone当前的通话时间限制在他们耳朵附近。

所以你也 iOS 聪明地做到了。

  • 在 iOS10 中引入了一个新的调用框架,即 CallKit。
  • 首先,您必须获得申请中的所有联系人。
  • 所以用户应该从您的应用程序调用。
  • 对于拨号,还要添加自定义 phone 拨号器。

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

  1. 添加调用观察者

    @属性(非原子)CXCallObserver *callObserver;

  2. 初始化调用观察者:

    • (实例类型)init { 自我= [超级初始化]; 如果(自我){

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

      }

添加call kit代理

#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分钟后,应该建议使用earphones。