Можем ли мы запустить событие, когда есть входящий и исходящий вызов в iphone? - PullRequest
5 голосов
/ 23 июля 2011

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

Ответы [ 3 ]

4 голосов
/ 23 июля 2011

Да, вы можете, но не обязательно сразу.

Существует структура, называемая структурой CoreTelephony, которая имеет класс CTCallCenter.Одним из свойств этого класса является свойство callEventHandler .Это блок, который срабатывает при изменении состояния телефонного звонка.Например:

CTCallCenter *callCenter = ...; // get a CallCenter somehow; most likely as a global object or something similar?

[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, поэтому вы однозначно идентифицируете объект CTCall.

ВНИМАНИЕ :

Этот обработчик событий не вызывается, если ваше приложение не на переднем плане!Если вы делаете и получаете вызовы, когда приложение находится в фоновом режиме, обработчик событий не будет запускаться до тех пор, пока ваше приложение снова не станет активным , после чего (согласно документации, указанной выше) обработчик событий будет вызван один раз.за каждый вызов , который изменил состояние, когда приложение находилось в фоновом режиме.

1 голос
/ 23 июля 2011

Нет, но вы получаете обратные вызовы в приложение, когда эти события происходят.

    -(void)applicationWillResignActive:(UIApplication *)application{
        //our app is going to loose focus since thier is an incoming call
        [self pauseApp];
    }

    -(void)applicationDidBecomeActive:(UIApplication *)application{
            //the user declined the call and is returning to our app
            [self resumeApp];
    }
0 голосов
/ 23 июля 2011

Нет. Что касается текущего SDK, это невозможно. Apple не позволяет приложениям иметь такие хуки.

...