### EDIT ###
IOS 10 и выше:
Использование Callkit, обратите внимание на расширение каталога вызова
Согласно документации,
Определение входящего калибра lers
Когда телефон получает входящий звонок, система сначала обращается к контактам пользователя, чтобы найти соответствующий номер телефона. Если совпадение не найдено, система затем обращается к расширению Call Directory для вашего приложения, чтобы найти соответствующую запись для идентификации номера телефона. Это полезно для приложений, которые поддерживают список контактов для пользователя, который отделен от системных контактов, таких как социальная сеть, или для идентификации входящих вызовов, которые могут быть инициированы из приложения, например, для поддержки обслуживания клиентов или уведомления о доставке ,
Например, рассмотрите пользователя, который дружит с Джейн в приложении для социальных сетей, но не имеет номера своих телефонов в своих контактах. Приложение социальной сети имеет расширение Call Directory Extension, которое загружает и добавляет номера телефонов всех друзей пользователя. Из-за этого, когда пользователь получает входящий звонок от Jane, система отображает что-то вроде «(имя приложения) Caller ID: Jane Appleseed», а не «Unknown Caller».
Чтобы предоставить идентифицирующую информацию о входящих абонентах, вы используете метод addIdentificationEntry (withNextSequentialPhoneNumber: label :) в реализации beginRequest (с :).
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()
}
}
Поскольку этот метод вызывается только тогда, когда система запускает расширение приложения, а не для каждого отдельного вызова, необходимо указать информацию о вызове идентификации сразу; вы не можете, например, сделать запрос к веб-службе, чтобы найти информацию о входящем звонке.
IOS, 9 и более ранние версии:
Как упоминалось Kakshil, идентификация вызывающего абонента не возможна на не взломанных устройствах.
И дам вам некоторые выводы о том, как истинный абонент работает,
Ее не читает историю звонков, они фактически создали Action extension, где бы вы пытаетесь разделить контакт, он будет отображать TrueCaller расширение приложения, которые кодируются для показа контакта детали сгружен с их сервера
Вы также можете запутаться с нажимным полученным уведомлением за несколько звонков, говоря «Некоторые Х зовут вас». Здесь truecaller использовал трюк. Если вы заметили ясно, что push-уведомление будет получено только тогда, когда вы получите звонок от пользователя android с установленным truecaller. Пусть мне объяснить вам в деталях,
X (Android пользователь с TrueCaller установлен), вызов Y (ИОС пользователь с TrueCaller установлен), андроид версия уведомляет сервер, что X делает вызов Y. И сервер будет отправьте push-уведомление на iPhone Y.
Идентификатор вызывающего абонента работает только с джейлбрейковыми устройствами ... –
Истинный абонент не получает идентификатор вызывающего абонента. Скорее они добавляют известные номера спама контакту в телефонной книге, и этот контакт имеет изображение «спама» – Paulw11
Да, но проверьте их последнее обновление. Они внедрили эту вещь, также опубликовали вступительное сообщение на своем веб-сайте .https: //www.truecaller.com/articles/iphone –