【问题标题】:How does the Navita TEM app get call log information?Navita TEM 应用程序如何获取通话记录信息?
【发布时间】:2014-02-07 04:59:17
【问题描述】:

Navitahttps://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且未越狱)

【问题讨论】:

    标签: ios core-telephony


    【解决方案1】:

    这是我从 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】:

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

    【讨论】:

    • 谢谢。如果应用在后台运行了很长时间、几天或几周,是否会截断更新并限制最近的 N?
    • 每个调用都应该包含一个事件。数据的减少是你每次调用只得到 1 个。
    • 我根本无法让它工作。你能评论我做错或没做的事吗?谢谢stackoverflow.com/questions/21195732/…
    • “它确实包含相当多的信息。” CTCall 只有 callState 和 callID,与开始/结束时间或通话时长无关。但是,如果我在 Navita 应用程序不在前台时拨打电话,那么它仍然能够获取通话时间和持续时间。这意味着它没有从 CTCall 获取此信息?
    • 运行连续 gps 更新时,每次位置更改时我都会收到通话更新,因此我知道通话的时间详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多