2014-01-17 50 views
11

Navita https://itunes.apple.com/us/app/navita-t.e.m.-personal/id590228620?mt=8 如何設置顯示呼叫日誌?Navita TEM應用程序如何獲取通話記錄信息?

如果我將應用程序從應用程序管理器中劃掉,那麼它會錯過這些調用,這表明它必須使用CTCallCenter的callEventHandler,並通過保存響應callEventHandler回調的時間/持續時間來創建自己的通話記錄。

但是,如果是這種情況,那麼它在後臺如何設置?我的印象是callEventHandler只能在前臺使用,而不能在後臺使用?

該應用正在使用位置服務,但是即使在禁用此功能後,它仍能夠獲取有關通話的信息​​(只要該應用未被暫停)。我雖然可能使用後臺位置更新來保持自己準備接收callEventHandler回調,但顯然不是。

Navita應用程序還可以顯示通話時間和通話時間。

賞金將授予一個答案,其中包含足夠的,準確的和詳細的信息,使我能夠模擬Navita應用程序的行爲,具體而言,我必須能夠編寫一個應用程序,可以獲得一個應用程序的時間和持續時間電話發生而應用程序在前臺沒有,而設備的位置服務被關閉,並且在應用程序已經在後臺比使用beginBackgroundTaskWithExpirationHandler授予〜3分鐘長:

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)

回答

4

下面是我從Navita TEM反彙編和它的資源中發現的。

應用程序使用兩種背景模式 - 位置和音頻。你可以在Info.plist文件中看到它。當您啓用電話呼叫記錄應用程序時,也將啓用「警報」和「實時」開關。當「警報」啓用的應用程序無限循環的背景「bg-sound.mp3」文件沒有聲音,它只是沉默。因爲它不使用像這樣的黑客How to get a call event using CTCallCenter:setCallEventHandler: that occurred while the app was suspended?。這與使用位置類似的技巧,以保持應用程序在後臺運行並接收電話事件。不知何故,這並未被AppStore拒絕。

+2

謝謝。這究竟是如何設法進入應用商店的? – Gruntcakes

2

如果你是在應用程序處於後臺時觀察呼叫中心,當應用程序返回到前臺時,您將獲得一組更新。這組數據可能並不像應用程序主要位於前景那樣準確,但它確實包含了相當多的信息。

+0

謝謝。如果應用程序在後臺進行了很長時間,幾天或幾周,更新會被截斷並限制最近的N? – Gruntcakes

+0

它應該爲每個呼叫包含一個事件。數據的減少是每次只能得到1個電話。 – Wain

+0

我無法完成這項工作。你能評論我做錯了還是不做?感謝http://stackoverflow.com/questions/21195732/how-do-you-get-information-on-retrospective-calls-using-calleventhandler – Gruntcakes

相關問題