Как Navita https://itunes.apple.com/us/app/navita-t.e.m.-personal/id590228620?mt=8 управлять отображением журнала вызовов?
Если я вытащил приложение из диспетчера задач, тогда он пропустит вызовы, это означает, что он должен предположительно использовать CTCallCenter 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 и unjailbroken)