#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, потому что это отправит телефонный звонок в фоновом режиме. Так что это может быть рискованно.