如何使用私有API来阻止iOS应用程序中的传入呼叫?

时间:2011-09-06 21:23:20

标签: iphone ios core-telephony

我希望能够有选择地阻止我正在编写的iOS应用程序中的传入呼叫。这是供个人使用的,而不是App Store,所以我可以使用私有API来实现这一目标。

我最近遇到了核心电话框架。有没有办法使用这个框架来阻止调用?如果没有,我可以使用哪些私有API来执行此操作?

3 个答案:

答案 0 :(得分:36)

你确定不是吗? http://tech.ruimaninfo.com/?p=83上的代码示例演示了如何执行此类操作。 SDK中的核心电话标头不完整。 当然这意味着没有应用程序商店 这是基于我链接的示例的代码片段

if ([str1 isEqualToString:@"kCTCallIdentificationChangeNotification"])
{
    NSDictionary *info = (__bridge NSDictionary *)userInfo;
    CTCall2 *call = (__bridge CTCall *)[info objectForKey:@"kCTCall"];
    NSString *caller = CTCallCopyAddress(NULL, call);
    NSLog(@"Caller %@",caller);
    if ([caller isEqualToString:@"+1555665753"])
    {
       //disconnect this call
       CTCallDisconnect(call);

}

需要其他定义:

typedef struct __CTCall CTCall;
extern NSString *CTCallCopyAddress(void*, CTCall *);
extern void CTCallDisconnect(CTCall*);

你需要监控电话中心的回调(参见链接示例) 我在iOS5设备上测试了这个片段

答案 1 :(得分:3)

核心电话不支持此功能。据我所知,任何已知的私有API都无法做到这一点。

答案 2 :(得分:0)

从iOS 10.0+开始,有一个CallKit,其中包含一个呼叫阻止和识别API:https://developer.apple.com/documentation/callkit

(在2020年或以后发现此信息的人的信息)