Navita如何https://itunes.apple.com/us/app/navita-t.e.m.-personal/id590228620?mt=8 设法显示通话记录?
如果我将应用程序从任务管理器中滑出,那么它会错过这些调用,这表明它必须使用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并且没有破解)
答案 0 :(得分: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拒绝。
答案 1 :(得分:2)
如果您在应用程序处于后台时观察呼叫中心,则会在应用程序恢复到前台时获得一组更新。这组数据可能不像应用程序主要位于前台那样准确,但确实包含了相当多的信息。