通话时长班

时间:2015-01-21 21:44:44

标签: ios objective-c jailbreak theos

我正在为 iOS 8 寻找处理通话时间 UIView (或来电者姓名)的课程  ,所以我可以勾住它并找到它的框架位置

enter image description here

到目前为止我尝试和发现的内容:

  • 我查了TelephonyUI private framework headers课程,经过这么多小时的挖掘和尝试后一无所获

  • 听起来它与MobilePhone.app有关,但无法找到任何内容

  • syslog主要在Core Telephony Framework

  • 下记录数据

1 个答案:

答案 0 :(得分:1)

在iOS 8上,在调用UI中没有longers在MobilePhone或SpringBoard中运行。它实际上是在一个单独的过程中运行的 - InCallService.app。它就像MFMessageComposeViewController我研究here一样有效。 MobilePhone或SpringBoard(不确定并且它并不重要),显示,所谓的远程视图控制器,用于呼叫视图 - 它是一个视图控制器,它正在您的应用程序中显示但其背后的实际逻辑在一个单独的过程中运行。

例如,当您显示MFMessageComposeViewController以从您的应用程序发送SMS消息时,您实际上使用代理对象通过XPC连接到另一个运行实际视图控制器代码的进程。您的应用程序仅将用户输入发送到进程并显示它返回给您的结果 - 远程视图控制器通过XPC连接转发方法调用。您实际上没有对控制器的任何控制 - 您可以通过实现逻辑的XPC服务提供的非常有限的API来操纵它。

这些远程视图控制器的明显目的是安全性。在iOS 5上没有任何和MFMessageComposeViewController被实现,就像常规视图控制器一样。这意味着您可以对其进行反向工程以在未经用户许可的情况下发送SMS消息这正是一些人所做的 - 有AppStore应用程序可以使用this代码静默发送SMS消息。从iOS 6开始,该代码需要AppStore无法拥有的特殊权利。 MessagesViewService.app拥有它并通过其中运行的远程视图控制器,您可以从AppStore应用程序发送SMS消息,但现在您无法在没有UI和用户交互的情况下执行此操作。

与呼叫UI相同。您可以通过拨打电话进行测试,然后终止InCallService.app进程 - 在通话视图中将消失。所以为了改变你需要钩住InCallService.app的东西。不幸的是,我没有研究它,以确切地告诉你需要挂钩的方法,但在这一点上它将非常容易。我建议你开始关注PHInCallRootViewControllerPHInCallRootViewControllerActualPHCallParticipantsView。后者有一个非常有趣的方法setSingleDurationTimerLabel:(id),它修改了_singleDurationTimerLabel ivar。它看起来像持续时间标签视图。