【问题标题】:Get the callers phone number from an incoming call on iPhone从 iPhone 上的来电中获取来电者电话号码
【发布时间】:2016-09-06 18:30:40
【问题描述】:

我正在尝试在来电时获取来电显示(电话号码)。 TrueCaller 已经实现了这一点,他们可以获取来电者的电话号码。

我找到了以下信息: 1. CoreTelephony Framework(它只给出调用状态) 2.苹果9.0更新:“Maybe”联系人同步。使用邮件应用程序并检测传入的电话号码。

【问题讨论】:

  • 来电显示仅适用于越狱设备...
  • 真正的来电者没有得到来电者ID。相反,他们将已知的垃圾邮件号码添加到电话簿中的联系人,并且该联系人具有“垃圾邮件”图像
  • 是的,但请查看他们的最新更新。他们实现了那个东西,还在他们的网站上发布了介绍消息。truecaller.com/articles/iphone
  • Truecaller 带来了一种在 iOS 9 上从通话记录中搜索的新方法 最近发布的 iOS 9 让 Apple 社区欣喜若狂,其中包含新的和改进的功能,在 Truecaller,我们热爱所有的可能性本次更新!
  • 将我们的应用程序的最佳版本带到所有平台一直是我们的 DNA,而今天,这正是我们在 iOS 9 上所做的事情!我们知道 Truecaller 的忠实 Apple 狂热者一直在寻找一种更简单、更快捷的方法来找出谁给他们打电话。 Truecaller 为我们的用户带来了一个新的操作扩展,包括一个令人兴奋的未知号码搜索功能,该功能直接内置到您的通话记录和消息中。这肯定会增强您使用 Truecaller 比以往更快地进行搜索的能力。感兴趣的?我们是这么认为的!

标签: ios core-telephony


【解决方案1】:

###EDIT###

iOS 10 及更高版本:

使用Callkit,看看通话目录扩展

根据文档,

识别来电者

当手机收到来电时,系统首先会查询用户的联系人以查找匹配的电话号码。如果未找到匹配项,则系统会查询您应用的呼叫目录分机以查找匹配条目以识别电话号码。这对于为用户维护与系统联系人分开的联系人列表的应用程序(例如社交网络)或识别可能从应用程序内部发起的来电(例如客户服务支持或交付通知)很有用.

例如,假设某个用户在社交网络应用中与 Jane 成为朋友,但在她的联系人中没有她的电话号码。社交网络应用程序有一个呼叫目录扩展,它可以下载并添加用户所有朋友的电话号码。因此,当用户接到 Jane 的来电时,系统会显示类似“(App Name) Caller ID: Jane Appleseed”而不是“Unknown Caller”。

要提供有关来电者的识别信息,您可以在 beginRequest(with:) 的实现中使用 addIdentificationEntry(withNextSequentialPhoneNumber:label:) 方法。

class CustomCallDirectoryProvider: CXCallDirectoryProvider {
    override func beginRequest(with context: CXCallDirectoryExtensionContext) {
        let labelsKeyedByPhoneNumber: [CXCallDirectoryPhoneNumber: String] = [ … ]
        for (phoneNumber, label) in labelsKeyedByPhoneNumber.sorted(by: <) {
            context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label)        
        }

        context.completeRequest()
    }
}

由于该方法仅在系统启动应用扩展时调用,而不是针对每个单独的呼叫,因此您必须一次性指定所有呼叫标识信息;例如,您不能向 Web 服务发出请求以查找有关来电的信息。

iOS 9 及更早版本:

正如 Kakshil 所说,来电显示无法在非越狱设备上使用。

我会给你一些关于真正调用者如何工作的发现,

  1. 它不是读取通话记录,他们实际上创建了Action extension,无论您尝试共享联系人,它都会显示 truecaller 应用程序扩展,用于显示联系人 从他们的服务器获取的详细信息

  2. 您可能还会对收到的推送通知感到困惑 打电话,说 “有些 X 打电话给你”。这是 truecaller 使用技巧的地方。如果你 清楚地注意到,只有在以下情况下才会收到推送通知 你接到一个安装了 truecaller 的 android 用户的电话。让 我给你详细解释一下,

X(安装了truecaller的android用户),调用Y(安装了truecaller的ios用户),android版本通知服务器X正在调用Y。服务器将推送通知到Y的iPhone。

【讨论】:

  • 但 truecaller 在 truecaller 应用程序的通话选项卡中提供来电详细信息
  • @SaurabhJain 您是否在 truecaller 应用程序中接听所有来电?
  • 不,先生,我只接到一些来电
  • @SaurabhJain 同样在 iOS 10 中,苹果允许应用程序使用 Callkit 进行来电识别,但用户应在 Settings->Phone->Call Blocking & Identification 下启用
  • @SaurabhJain 这就是诀窍,如果从 ios truecaller/android mobile 向您的号码拨打电话,则将数据存储在他们的服务器中,并通知您,显示在您的日志中。
【解决方案2】:

来电显示在非越狱设备上是不可能的。

但是有一种方法,您可以知道哪个用户正在呼叫,但不确定它是否对您有用。

如果你有一个蓝牙设备,连接到 iPhone,它会收到所有通知,包括来电,然后你可以获取来电显示。

除此之外,目前根本没有其他方法可以知道被叫ID。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2012-02-11
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多