Ios Navita TEM应用程序如何获取通话记录信息?

Ios Navita TEM应用程序如何获取通话记录信息?,ios,core-telephony,Ios,Core Telephony,纳维塔怎么样 是否显示通话记录 如果我将应用程序从任务管理器中刷出,则它将错过呼叫,这表明它可能正在使用CTCallCenter的callEventHandler,并通过保存响应callEventHandler回调的时间/持续时间来创建自己的呼叫日志 然而,如果是这样的话,那么它是如何在后台做到这一点的呢?我的印象是callEventHandler只能被前台应用程序使用,而不能被后台应用程序使用 该应用程序正在使用位置服务,但即使禁用此功能,它仍然能够获取有关呼叫的信息(前提是该应用程序未挂起)

纳维塔怎么样 是否显示通话记录

如果我将应用程序从任务管理器中刷出,则它将错过呼叫,这表明它可能正在使用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并且没有故障)

如果你在后台观察呼叫中心,当应用程序返回前台时,你会得到一组更新。这组数据可能不像应用程序在前台时那样准确,但它确实包含了相当多的信息。

以下是我从Navita TEM反汇编中找到的信息及其资源


应用程序使用两种背景模式-位置和音频。您可以在Info.plist文件中看到它。当您启用电话呼叫时,日志记录应用程序还将启用“警报”和“实时”开关。当启用“警报”功能的应用程序在后台“bg sound.mp3”文件中无限循环时,该文件并没有声音,它只是静默。正因为如此,它没有使用像这样的黑客。这类似于为了让应用程序在后台运行并接收电话事件而使用的定位技巧。不知何故,AppStore并未拒绝此请求。

谢谢。如果应用程序在后台运行了很长一段时间、几天或几周,更新是否会被截断并限制为最近的N?它应该为每个调用包含一个事件。数据的减少是每次通话只能得到1个。我根本无法让它正常工作。你能评论我做错了什么或没有做什么吗?谢谢“它确实包含了很多信息。”CTCall只有callState和callID,没有关于开始/结束时间或通话持续时间的信息。但是,如果我在Navita应用程序不在前台时打电话,那么它仍然能够获取通话时间和持续时间。这意味着它没有从CTCall获取此信息?当运行连续的gps更新时,每次位置改变时,我都会得到一个呼叫更新,因此我知道呼叫的时间细节。谢谢。这到底是怎么进入应用商店的?