2016-11-28 2 views
1

Я работаю над фреймворком callKit, я обнаружил, что с помощью расширения каталога вызовов мы можем определить входящий номер телефона. Мой вопрос, как реализовать расширение каталога вызовов в приложении iOS, чтобы определить детали входящих вызовов. Я работаю в Objective C.Как использовать расширение каталога вызовов для идентификации входящего вызова в моем приложении?

Пусть число «+ 919876xxxxx» добавить в расширении каталога вызовов с помощью этого метода:

- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context { 
    // Numbers must be provided in numerically ascending order. 
    CXCallDirectoryPhoneNumber phoneNumbers[] = {+919876xxxxx}; 

    NSArray<NSString *> *labels = @[ @"Telemarketer"]; 
    NSUInteger count = (sizeof(phoneNumbers)/sizeof(CXCallDirectoryPhoneNumber)); 

    for (NSUInteger i = 0; i < count; i += 1) { 
     CXCallDirectoryPhoneNumber phoneNumber = phoneNumbers[i]; 
     NSString *label = labels[i]; 
     [context addIdentificationEntryWithNextSequentialPhoneNumber:phoneNumber label:label]; 
    } 
    return YES; 
} 

И я на блокирующий вызов и функции идентификации в настройках телефона. Когда я звоню с этого номера, он показывает имя [Идентификатор приложения] Caller ID: Telemarketer.

Мой вопрос: как узнать это число в своем приложении, чтобы я показал это число в таблице.

Спасибо заранее.

+0

с помощью расширения, вы хотите создать расширение –

+0

@ Anbu.Karthik , Да, я хочу создать расширение каталога вызовов, которое является новым в iOS10 –

+0

@Saurabh Jain У вас есть решение? У меня такая же проблема, в моей функции блокировки вызовов приложений работает нормально, но не в состоянии идентифицировать вызов. Если вы решили это, пожалуйста, помогите. – Ved

ответ

6

Если этот вопрос не является тем, как писать расширение каталога вызовов, но как получить номер входящего вызова, который, по моему мнению, является вопросом, тогда его невозможно.

Расширение каталога вызовов не задействовано, когда есть входящий вызов. Все, что он делает, это номера регистров, которые хранятся во внутренней базе данных SQL, которая является частной для приложения для телефона. Расширение каталога вызовов НЕ запускается при входящем вызове, и поэтому оно и ваше приложение не могут идентифицировать номер входящего вызова, это то же самое, что оно всегда было, оно не изменилось в iOS 10.

Существует новая функциональность для обнаружения вызовов для приложений Voip, добавленных в iOS 10, но если вы не являетесь приложением voip, вы все равно не можете получить номер входящего (или исходящего) вызова.

+0

Могу ли я определить состояние вызова в фоновом режиме? –

1

Прежде всего, вам нужно активировать ваш CallBlocker приложение в App Настройка для этого следовать за этим -

Перейти к Settings-> телефон-> блокировки вызовов & identification-> Включение функции App.

После этого использования addIdentificationEntry для добавления записи

private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws { 

     let phoneNumbers: [CXCallDirectoryPhoneNumber] = [ 18775555555, +919899999999 ] 
     let labels = [ "Telemarketer", "Local business" ] 

     for (phoneNumber, label) in zip(phoneNumbers, labels) { 
      context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) 
     } 
    } 

Который работает отлично в Xcode 8.x быстрой 3.x

Смежные вопросы