我必须开发一个移动应用程序来监控有关呼叫的一些信息,以限制公司用户花费太多时间将手机放在耳朵附近。x分钟后,应建议使用耳机。
第一个问题:是否可以像这样监控数据?电话通话持续时间,开始和结束,如果使用耳机,内置或外部扬声器。我的意思是,不使用越狱或其他黑客攻击。
第二个问题:是否可以在IOS和Android上做到这一点?
3rt问题:你知道Ionic是否有这个能力吗?
谢谢。
回答您的问题:
问题1:是的,在安卓上是可能的。这在 iOS 上是不可能的。在 Android 中,如果用户允许,您可以获取通话信息。你不需要越狱或其他什么。而在iOS中,您无法访问通话信息。
问题2:希望我的第一个答案本身能回答这个问题。
问题3:AFAIK离子框架仅提供电话呼叫持续时间和联系人框架的基本详细信息。您应该在Android上探索更多内容以找出答案。即使您使用离子框架,您也无法在iPhone上访问此信息,因为本机ios仅不提供这些详细信息,我们不能期望从ionic框架中获得此信息。
对于安卓:
- 您可以轻松获取通话记录或来电和去电时间。 所以在安卓中是可能的。
对于 iOS:
根据您的问题,您想限制他们耳朵附近的手机的当前通话时间。
所以你也可以通过一些聪明在iOS中做到这一点。
- 在iOS 10中引入了一个新的调用框架,即CallKit。
- 首先,您必须获得应用程序中的所有联系人。
- 因此,用户应从您的应用调用。
- 对于拨号,还要添加自定义电话拨号器。
通过调用套件的某种方法,您可以执行以下操作:
-
添加呼叫观察器
@property ( 非原子 ( CXCallObserver *callObserver;
-
初始化调用观察器:
-
(实例类型(初始化 { 自我 = [超级初始化]; 如果(自我({
//Initialize the call observer _callObserver = [CXCallObserver new]; [_callObserver setDelegate:self queue:dispatch_get_main_queue()]; } return self;
}
-
添加呼叫工具包的委托
#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 分钟后,应该建议使用耳机。