我必须开发一个移动应用程序来监控有关呼叫的一些信息,以限制公司用户花费太多时间将电话放在耳边。 x 分钟后,建议使用耳机。
第一个问题:是否可以监控这样的数据?电话通话的持续时间,开始和结束,如果它使用的是耳机,内置或外置扬声器......我的意思是,不使用越狱或其他黑客攻击。
第二个问题:是否有可能为IOS和Android做这个?
<3>问题:你知道Ionic是否具备这种能力吗?谢谢。
答案 0 :(得分:2)
回答您的问题:
问题1:是的,可以在Android上使用。这在iOS上是不可能的。在Android中,如果用户允许,您可以获取呼叫信息。你不需要做越狱或其他什么。而在iOS中,您无法访问呼叫信息。
问题2:希望我的第一个答案自己回答这个问题。 i。,e-Android-Possible,iOS-不可能
问题3: AFAIK离子框架仅提供电话呼叫持续时间和联系人框架的基本详细信息。您应该在Android上探索更多信息。即使您使用离子框架,您也无法在iPhone上访问此信息,因为本机ios仅提供这些细节,我们不能指望离子框架。
答案 1 :(得分:1)
适用于Android:
适用于iOS:
根据您的问题,您希望将手机的当前通话时间限制在耳边。
所以你也可以通过一些聪明的方式在iOS中做到这一点。
通过callKit的一些方法,你可以做到:
添加呼叫观察员
@property(非原子)CXCallObserver * callObserver;
初始化调用观察者:
(instancetype)INIT { self = [super init]; if(self){
//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分钟后,它应该建议使用耳机。