【问题标题】:How to get user incoming call phone number in iOS device如何在 iOS 设备中获取用户来电电话号码
【发布时间】:2012-11-20 19:29:58
【问题描述】:

我使用 iOS SDK 4.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 对象中获取来电电话号码吗?或者还有其他方法。
我不想使用 Private API。Apple iOS SDK 有没有可用的方法?

【问题讨论】:

  • 嗨,Ritika,您能告诉我您是否从 CTCall 获得了这个来电号码。因为我已经在这里看到了答案,所以它说不可能,但是 TrueCaller 应用程序如何说这个号码是垃圾邮件?苹果会批准与否,这是第二件事。

标签: ios background phone-call core-telephony


【解决方案1】:

在官方 SDK 中没有办法做到这一点,你不能在后台使用它,因为它不属于后台运行类别,除非你的应用程序在后台执行其他操作然后只是监视调用。

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

【讨论】:

  • rckoenes:当前 SDK(iOS6) 是否可行?我发现一些像 metawatch 这样的智能手表可以在手表上显示来电。链接在这里。 itunes.apple.com/us/app/metawatch-manager-for-ios/…
  • 智能手表使用蓝牙 API 而非应用程序。所以是的,他们可以,但你不能在应用程序中做到这一点。
  • 我们可以使用 CoreBluetooth API 使用它吗?或者我需要检查一些其他 API 吗?我检查了CoreBluetooth,但找不到与通话相关的信息。
  • 不,您不能使用 CoreBluetooth,因为您必须连接到您尝试从中发送连接请求的同一设备。这是不可能的。
  • 嗨 rckoenes,那么 TrueCaller 应用程序如何说这个号码是垃圾邮件?苹果会批准与否,这是第二件事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多