从iPhone上的来电中获取来电者的电话号码

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

我发现了这个信息:1。CoreTelephony框架(它只提供呼叫状态)2。Apple的9.0更新:“可能”联系人同步。 使用邮件应用程序并检测传入的电话号码。

###编辑###

iOS 10及以上版本:

使用Callkit ,看一下调用目录扩展

根据文件,

识别来电者

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

例如,考虑在社交网络应用中与Jane成为朋友但在其联系人中没有她的电话号码的用户。 社交网络应用程序具有呼叫目录扩展,其下载并添加所有用户的朋友的电话号码。 因此,当用户从Jane接收来电时,系统会显示类似“(应用程序名称)来电显示:Jane Appleseed”而非“未知来电者”的内容。

要提供有关传入呼叫者的标识信息,请在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扩展 ,无论您何时尝试共享联系人,它都会显示truecaller应用程序扩展,其编码用于显示从其服务器获取的联系人详细信息

  2. 你可能也会对收到少数几个电话的推送通知感到困惑,说“有些X给你打电话”。 这就是truecaller使用技巧的地方。 如果您注意到,只有当您从安装了truecaller的Android用户接到电话时才会收到推送通知。 让我详细解释一下,

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

在非越狱设备上无法使用来电显示。

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

如果您有连接到iPhone的蓝牙设备,它将获得所有通知,包括来电,然后您可以获取来电显示。

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

Interesting Posts