【发布时间】:2014-06-18 21:07:20
【问题描述】:
我正在为越狱的 iPhone 开发一项调整。我正在尝试拦截将呼叫添加到呼叫历史记录的过程。通过一点点搜索,我在 CoreTelephony 框架 found here 中找到了 CTCallHistoryStoreAddCall 函数。当我尝试使用它时,我得到一个错误:
Undefined symbols for architecture armv7: "_CTCallHistoryStoreAddCall"
我链接了 CoreTelephony 框架,我在代码中使用它的方式是:
typedef struct __CTCall * CTCallRef;
extern "C" void CTCallHistoryStoreAddCall(CTCallRef call);
我猜这意味着这个函数不再存在,或者如果它存在,我没有以正确的方式使用它。 如何找到负责将来电添加到通话记录的正确函数?
提前致谢。
我在 Xcode 5 上使用 iOSOpenDev。
【问题讨论】:
-
没有这个功能。至少在iOS7中。我在这里发布了 iOS7 的解决方案 stackoverflow.com/questions/22729003/… 在 iOS6 上,类名不同但代码完全相同 - Apple 只是重命名了这些类。我的挂钩电话应用程序类的解决方案有效,我从 iOS4 开始使用它。
-
我测试了你所做的,但它只是冻结并在列表中显示调用。在我关闭手机应用程序并再次打开它之后,它就可以工作了。有没有办法在不冻结的情况下拦截它?
-
我没有看到冻结。即使我在电话应用程序中,我的代码也适用于我。我取消了隐藏呼叫,但呼叫列表中没有任何显示,即使在电话应用程序处于前台时取消隐藏呼叫也是如此。
-
我发现它为什么很慢。问题是调用历史记录中的每个调用都会调用
initWithCTCall,因此该函数中的任何进程都可能导致应用程序 UI 暂停。我删除了所有通话记录并稍微简化了代码,现在它可以工作了!发布您的答案,以便我接受作为答案。谢谢!
标签: ios iphone jailbreak core-telephony