Как получить номер телефона входящего звонка пользователя на устройстве iOS

Я использовал платформу CoreTelephony, представленную в iOS SDK 4.0, чтобы узнать о входящем вызове и его состоянии сброса.

CTTelephonyNetworkInfo *tni = [[CTTelephonyNetworkInfo alloc] init];
    callCenter = [[CTCallCenter alloc] init];
    crtCarrierName = tni.subscriberCellularProvider.carrierName;

    [callCenter setCallEventHandler:^(CTCall *call) {
      if ([[call callState] isEqual:CTCallStateConnected]) {
        //this call has just connected
      } else if ([[call callState] isEqual:CTCallStateDisconnected]) {
        //this call has just ended (dropped/hung up/etc)
      }
    }];

Могу ли я использовать этот обработчик событий для отслеживания состояния вызова, когда мое приложение работает в фоновом режиме? Могу ли я также получить номер телефона для входящего звонка из объекта CTCall? или есть другой способ.
Я не хочу использовать Private API. Доступен ли способ из Apple iOS SDK?


person Ritika    schedule 03.12.2012    source источник
comment
Привет, Ритика, не могли бы вы сказать мне, получили ли вы этот входящий номер телефона от CTCall или нет. Поскольку я готов увидеть ответ здесь, он говорит, что это невозможно, но тогда как приложение TrueCaller говорит, что этот номер является спамом? Apple одобрит или нет, это второе.   -  person Bhavesh Lathigara    schedule 02.06.2016


Ответы (1)


Нет, в официальном SDK нет возможности сделать это, вы не можете использовать его в фоновом режиме, так как он не входит в фоновые категории, если ваше приложение не выполняет что-то еще в фоновом режиме, а просто отслеживает вызов.

Вы никогда не сможете получить номер телефона текущего звонка, так как это личные данные, которые Apple не позволит вам получить доступ к данным.

person rckoenes    schedule 03.12.2012
comment
rckoenes: Возможно ли это с текущим SDK (iOS6)? Я нашел несколько умных часов, таких как metawatch, которые отображают входящий звонок на часах. Ссылка здесь. itunes.apple.com/us/app/ metawatch-manager-for-ios / - person Ram; 01.02.2013
comment
Умные часы используют API Bluetooth, а не приложение. так что да, они могут, но вы не сможете сделать это в приложении. - person rckoenes; 01.02.2013
comment
Можем ли мы использовать его с помощью CoreBluetooth API? Или мне нужно проверить какой-то другой API? Я проверил CoreBluetooth, но не смог найти информацию о звонке. - person Ram; 01.02.2013
comment
Нет, вы не можете использовать CoreBluetooth, потому что тогда вам придется подключаться к тому же устройству, с которого вы пытаетесь отправить запрос на подключение. Это просто невозможно. - person rckoenes; 01.02.2013
comment
Привет, rckoenes, тогда как приложение TrueCaller считает этот номер спамом? Apple одобрит или нет, это второе. - person Bhavesh Lathigara; 02.06.2016
comment
Во-первых, TrueCaller не улавливает входящие звонки, а добавляет новую группу в ваш список контактов. В эту группу добавляется весь известный для спама номер, будет добавлено много 1000 номеров. Они устанавливают красивый значок пользователя для каждого номера, который появляется, когда номер звонит вам. API для получения входящего номера нет. - person rckoenes; 02.06.2016