Как я могу получить номер телефона абонента при входящем вызове на iphone

#iphone #core-telephony

#iPhone #базовая телефония

Вопрос:

Привет, я хочу создать приложение, которое что-то делает при поступлении входящего вызова. Но я думаю, что телефон должен быть взломан на iphone, чтобы получить доступ к классу, который это делает. Я хочу сделать это без взлома телефона.

Ответ №1:

Невозможно.

Однако вы можете получить такую информацию, как состояние вызова (подключен / отключен и т.д.), Используя платформу CoreTelephony.

Ответ №2:

Если вы хотите что-либо сделать при поступлении или отправке вызова, вам нужно использовать этот код:

 CTCallCenter *callCenter; //make it ivar if you are using ARC or handler will be auto-released...
callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call) {
    NSLog(@"Call id:%@", call.callID);
    [self callStateChange:call.callState andId:call.callID];
    if (call.callState==CTCallStateDialing) {
       NSLog(@"Call state:dialing");
    }
    if (call.callState==CTCallStateIncoming) {
       NSLog(@"Call state:incoming");
       //here you lower your speaking volume if you want
    }
    if (call.callState==CTCallStateConnected) {
       NSLog(@"Call state:connected");
    }
    if (call.callState==CTCallStateDisconnected) {
       NSLog(@"Call state:disconnected");
    }
};
  

но это сработает, когда приложение u будет активным или перейдет из фонового режима на передний план. Если приложение завершит работу или будет приостановлено, это не сработает. Сначала вы определяете состояние вызова, а затем немедленно показываете локальное уведомление. И когда нажимаете на просмотр сведений, снова показываете ваше приложение. Но это не одобрено Apple, потому что это отправит телефонный звонок в фоновом режиме. Так что это может быть рискованно.