如何在iOS设备中获取用户来电号码

如何在iOS设备中获取用户来电号码,ios,background,phone-call,core-telephony,Ios,Background,Phone Call,Core Telephony,我使用iOSSDK4.0中引入的CoreTelephony框架来了解传入呼叫及其丢弃状态 CTTelephonyNetworkInfo *tni = [[CTTelephonyNetworkInfo alloc] init]; callCenter = [[CTCallCenter alloc] init]; crtCarrierName = tni.subscriberCellularProvider.carrierName; [callCenter setCallE

我使用iOSSDK4.0中引入的CoreTelephony框架来了解传入呼叫及其丢弃状态

CTTelephonyNetworkInfo *tni = [[CTTelephonyNetworkInfo alloc] init];
    callCenter = [[CTCallCenter alloc] init];
    crtCarrierName = tni.subscriberCellularProvider.carrierName;

    [callCenter setCallEventHandler:^(CTCall *call) {
      if ([[call callState] isEqual:CTCallStateConnected]) {
        //this call has just connected
      } else if ([[call callState] isEqual:CTCallStateDisconnected]) {
        //this call has just ended (dropped/hung up/etc)
      }
    }];
当我的应用程序处于后台时,我可以使用此事件处理程序跟踪呼叫状态吗? 我还可以从CTCall对象获取传入呼叫电话号码吗?或者还有其他方法。

我不想使用私有API。Apple iOS SDK有没有可用的方法?

没有,在官方SDK中没有这种方法,你不能在后台使用它,因为它不属于后台运行类别,除非你的应用程序在后台做些其他事情,然后只是监视调用


您将永远无法获取当前通话的电话号码,因为这是私人数据。苹果将不允许您访问数据。

rckoenes:当前SDK(iOS6)是否可能?我发现了一些智能手表,比如metawatch,可以在手表上显示来电。这里是链接。smartwatch使用蓝牙API而不是应用程序。所以,是的,他们可以,但你将无法在应用程序中完成。我们可以使用CoreBluetooth API使用它吗?或者我需要检查其他API吗?我检查了CoreBluetooth,但找不到与呼叫相关的信息。不,您不能使用CoreBluetooth,因为您必须连接到您尝试从中发送连接请求的同一设备。这是不可能的。嗨,rckoenes,那么TrueCaller应用程序怎么说这个号码是垃圾邮件呢?苹果会批准还是不批准这是第二件事。嗨,Ritika,你能告诉我你是否从CTCall得到这个来电号码吗。因为我已经看到了这里的答案,它说不可能,但TrueCaller应用程序怎么说这个号码是垃圾邮件呢?苹果是否会批准这是第二件事。