15

我希望能够有选择地阻止我正在编写的 iOS 应用程序中的来电。这是供个人使用的,而不是 App Store,所以我可以使用私有 API 来完成此操作。

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

4

3 回答 3

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 设备上测试了这个片段

于 2011-12-01T07:02:43.787 回答
3

Core Telephony 不支持此功能。据我所知,任何已知的私有 API 也无法做到这一点。

于 2011-09-06T23:52:00.490 回答
0

由于 iOS 10.0+ 有 CallKit,其中包括呼叫阻止和识别 API:https ://developer.apple.com/documentation/callkit

(面向 2020 年或未来发现此问题的人的信息)

于 2020-11-26T18:45:18.240 回答