Как приложение Navita TEM получает информацию из журнала вызовов?

Как работает Навитаhttps://itunes.apple.com/us/app/navita-t.e.m.-personal/id590228620?mt=8 удалось отобразить журнал вызовов?

Если я удаляю приложение из диспетчера задач, то оно пропускает вызовы, это указывает на то, что оно предположительно использует CTCallCenter 's callEventHandler и создает свой собственный журнал вызовов, сохраняя время / продолжительность в ответ на обратные вызовы callEventHandler.

Однако, если это так, то как это удается сделать в фоновом режиме? У меня сложилось впечатление, что callEventHandler может использоваться только приложениями на переднем плане, а не в фоновом режиме?

Приложение использует службы определения местоположения, однако даже после отключения оно все еще могло получать информацию о вызовах (при условии, что приложение не 'т приостановлено). Я думал, что он может использовать фоновые обновления местоположения, чтобы быть готовым к получению обратных вызовов callEventHandler, но, видимо, нет.

Приложение Navita также может отображать время и продолжительность звонка.

Награда будет присуждена за ответ, который содержит достаточную, точную и подробную информацию, которая позволяет мне эмулировать поведение приложения Navita, в частности, я должен быть в состоянии написать приложение, которое может получить время и продолжительность произошедшего телефонного звонка в то время как приложение не было на переднем плане, в то время как устройство 'Службы определения местоположения были отключены, и после того, как приложение находилось в фоновом режиме дольше, чем ~ 3 минуты, предоставленные с помощью beginBackgroundTaskWithExpirationHandler:

   Here is what I observe with the Navita app that I want to be able to reproduce:

1) Run app
2) Task away from app
3) Go to device settings, privacy, and turn off Location Services.
4) Go to device settings, privacy, background app refresh and turn off for the app
5) Wait > 10 minutes to make sure the app is not still in the background as a consequence of using beginBackgroundTaskWithExpirationHandler:
6) Call the device from another phone, answer the phone call, then hang up.
7) Launch the app again and display the call time and duration

(Это iOS7 и не взломанный)

Ответы на вопрос(2)

Ваш ответ на вопрос