我想知道来电时的来电显示(电话号码)。TrueCaller已经实现了这一点,他们会得到呼叫者的电话号码。
我找到了这个信息: 1. CoreTelephony框架(它只给出通话状态) 2.苹果9.0的更新:“也许”联系人同步。使用邮件应用程序并检测传入的电话号码。
发布于 2016-07-28 22:51:00
###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提到的,呼叫者ID在非越狱设备上是不可能的。
我会给你一些关于真正的呼叫者是如何工作的发现,
X(安装了truecaller的安卓用户),呼叫Y (安装了truecaller的ios用户),安卓版本通知服务器X呼叫Y,服务器会向Y的iPhone发送推送通知。
发布于 2016-05-11 19:39:07
呼叫者ID在非越狱设备上是不可能的。
然而,有一种方法,您可以知道是哪个用户在呼叫,但不确定它是否对您有用。
如果您有连接到iPhone的蓝牙设备,它将获得所有通知,包括来电,然后您可以获取呼叫者ID。
除此之外,目前根本没有其他方法可以知道被叫ID。
https://stackoverflow.com/questions/37161222
复制相似问题