【发布时间】:2011-11-11 16:25:32
【问题描述】:
我希望能够在我正在编写的 iOS 应用程序中选择性地阻止来电。这是供个人使用的,而不是 App Store,所以我可以使用私有 API 来完成此操作。
我最近遇到了 Core Telephony 框架。有没有办法使用这个框架来阻止调用?如果没有,我可以使用哪些私有 API 来执行此操作?
【问题讨论】:
标签: iphone ios core-telephony
我希望能够在我正在编写的 iOS 应用程序中选择性地阻止来电。这是供个人使用的,而不是 App Store,所以我可以使用私有 API 来完成此操作。
我最近遇到了 Core Telephony 框架。有没有办法使用这个框架来阻止调用?如果没有,我可以使用哪些私有 API 来执行此操作?
【问题讨论】:
标签: iphone ios core-telephony
你确定不是吗? 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 设备上测试了这个片段
【讨论】:
Core Telephony 不支持此功能。据我所知,任何已知的私有 API 也无法做到这一点。
【讨论】:
从 iOS 10.0+ 开始,就有了 CallKit,其中包括一个呼叫阻止和识别 API:https://developer.apple.com/documentation/callkit
(为 2020 年或未来发现此内容的人提供的信息)
【讨论】: