如何获取有关 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的一些方法你可以做到:
添加调用观察者
@属性(非原子)CXCallObserver *callObserver;
初始化调用观察者:
(实例类型)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。
我必须开发一个移动应用程序来监控有关通话的一些信息,以限制公司的用户花太多时间在他们耳朵附近的 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的一些方法你可以做到:
添加调用观察者
@属性(非原子)CXCallObserver *callObserver;
初始化调用观察者:
(实例类型)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。