如何从iphone上的来电中获取来电者的电话号码

时间:2011-04-21 04:14:29

标签: iphone core-telephony

您好我想构建一个应用程序,当来电进来时会做一些事情。但我认为手机需要在iphone上越狱才能访问这样做的类。我想在没有电话被越狱的情况下这样做。

2 个答案:

答案 0 :(得分:2)

不可能。

但是,您可以使用CoreTelephony框架获取呼叫状态(已连接/已断开连接等)等信息。

答案 1 :(得分:0)

如果您想在来电或来电时做任何事情,那么您必须使用此代码:

CTCallCenter *callCenter; //make it ivar if you are using ARC or handler will be auto-released...
callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call) {
    NSLog(@"Call id:%@", call.callID);
    [self callStateChange:call.callState andId:call.callID];
    if (call.callState==CTCallStateDialing) {
       NSLog(@"Call state:dialing");
    }
    if (call.callState==CTCallStateIncoming) {
       NSLog(@"Call state:incoming");
       //here you lower your speaking volume if you want
    }
    if (call.callState==CTCallStateConnected) {
       NSLog(@"Call state:connected");
    }
    if (call.callState==CTCallStateDisconnected) {
       NSLog(@"Call state:disconnected");
    }
};

但是当你的应用程序处于活动状态或将背景变为前景时,这将起作用。如果应用程序将终止或暂停,那将无法正常工作。首先,您检测呼叫状态,然后立即显示本地通知。点击查看详细信息,然后再次显示您的应用程序。但这不是苹果批准的,因为它会在后台发送电话。所以它可能有风险。